Refactor the compiler to generate description dicts.

This update allows the creation of templated types which delay the
creation of objects until runtime. Based on this ability, Looper
has been refactored to create an independent scope for each loop
iteration, and a Conditional component has been written.
Add some somewhat decent error reporting when global lookups fail.
Cleanup documentation and remove dead code.
Update line numbers in documentation
Update exception handling.
Update the looper to keep a tuple of tuples as items, instead of a flat
tuple
Use the EnamlDef metaclass to help with initial population.

This greatly simplifies the Declarative class and makes it easier
to reason about when and how an object is populated.
Merge pull request #248 from enthought/feature-conditional

Feature conditional