Disentangle configuration access from the data store layer

Before this change an awful lot of the Razor code accessed the global
configuration through the "data" object - because the database abstraction
happened to load the configuration file, all the rest of the code connected to
the database to access the side effect of configuration data.

The database abstraction also owned loading and updating the configuration
file on disk, tying the two together in very intimate ways that, generally,
don't make a lot of sense.

This extracts a bunch of logic around configuration file handling from the
data store, puts it in the configuration class, and then builds a global
configuration accessor off the project to provide access.

This is, in essence, a change from `get_data.config['whatever']` to
`ProjectRazor.config['whatever'`, which seems like an overall win.

Really, this is code cleanup and lays the groundwork for changing the data
abstraction layer in more fundamental ways tomorrow.  The goal is not to
change fundamental behaviours, just to clean up the code that builds them.

Signed-off-by: Daniel Pittman <daniel@rimspace.net>
Merge pull request #429 from daniel-pittman/feature/master/323-extract-and-sanitize-config-handling-for-persistence-layer-updates

Disentangle configuration access from the data store layer