Introduce "instance family" abstraction

Based on the details that are described in this page:
http://aws.amazon.com/ec2/instance-types/instance-details/

InstanceFamilyType introduces a higher level abstraction of the types of the instances that are used.
Examples include "general purpose" or "compute optimized".
Such abstraction can be better used in application-level awareness of the resources that are required to deliver a type of service.
For instance, a service such as data storage needs resources of the family "Storage optimized" which could help hide away lower-level details
of the instance type that is used. It additionally allows to be used in higher-level description of the services that are deployed on the cloud.

A method is added to `InstanceType` to resolve the instance family of the instance type.
There *can* be also a method added to `Instance` that resolves the family directly.