Refactor settings and project settings

The previous way that settings at both the global and project scope
were being handled was pretty bad. This change seeks to make settings
a bit more sane.  Now we will pass in what we found in the manifest
as the args to the specific settings constructor. Those that can be
exposed directly will be, and those that cannot will be wrapped in
@property decorators.
    
In addition, moving the jinja templating from the manifest level to
the individual project level. The reason is that it is not sufficient
to just use templating globally - we need things like base_path's to
be project context aware.