Simplified configuration interface closes #94

Config values are now accessed by giving the full key to the []
operator:

    config['a.valid.key']

They return a value of a fixed type, which is recorded in the underlying
Property object. For simple types like bool, int, float and str the
type can be inferred from the initial value recorded for a key.

Configuration and Property objects are immutable and can only be
replaced by modified copies of themselves.

Due to better exception handling, invalid or deprecated user options
no longer trigger the whole default set being loaded, but are deleted
from the database instead.

See useroptions.py for many usage examples of the new interface.