NFV Platforms: Taxonomy, Design Choices and Future Challenges