Enums as First Class

 - Fixes #96 
 - Introduce enums as first class element

InternalServiceDescription is used only for validation - making it optional here let's us return a nice validation error to the user. You will see it is NOT optional in ServiceDescription which is the base class for all the rest of apidoc