machine types, constraints and classes

We now explore the strategy of defining machine constraints using
ConstraintKinds.  The features module has been renamed to
Aim/Machine.hs
removed -Werror
classes that capture generic machine supported types
added documentation and reorganized code
Machine class exposed
got rid of Bits32 and Bits64 class
got rid of same architecture
added the Instructions type