Retaining backwards compatability for the time being
Initial refactoring work complete

Trying to make config definition more pythonic and dynamic. Below is
an example:

    from freeseer.framework.config.options import StringOption, IntegerOption
    from freeseer.framework.config.persist import ParserConfig

    class FreeseerConfig(ParserConfig):
        name = StringOption('Michael Tom-Wing')
        age = IntegerOption(0)

    if __name__ == '__main__':
        config = FreeseerConfig('/tmp/freeseer.conf', 'Global')
        config.load_if_possible()

        print 'Name:', config.name, type(config.name)
        print 'Age:', config.age, type(config.age)

        config.age += 20

        print 'Name:', config.name, type(config.name)
        print 'Age:', config.age, type(config.age)

        config.save()
Replaced NotImplementedError with abc abstract methods

The old style way of implementing an interface / virtual methods was
to raise NotImplementedError. Python 2.7+ introduces the abc module
(AbstractBaseClass) and an abstract method decorator. Upon instantiation
of the subclass, abc will throw an exception if any of the abstract
methods is not overriden.

The previous style would only throw an exception only when the method
is called. ABC makes things fail faster.
Replaced NotImplementedError with abc abstract methods

The old style way of implementing an interface / virtual methods was
to raise NotImplementedError. Python 2.7+ introduces the abc module
(AbstractBaseClass) and an abstract method decorator. Upon instantiation
of the subclass, abc will throw an exception if any of the abstract
methods is not overriden.

The previous style would only throw an exception only when the method
is called. ABC makes things fail faster.
Added post_get and post_set methods for Options
Option base class now uses abc for abstract methods
Tidied up Option exceptions
Added BooleanOption for Configs
Added FolderOption for Configs
Added ChoiceOption for Configs
Configs are no longer responsible for saving themselves

This commit introduces two new objects: ConfigManager and
ProfileManager. The ConfigManager is responsible for loading and saving
config classes. The ProfileManager has methods for localizing the
ConfigManager's files to a specific profile folder.
Configs now store options in a alphabetical order
Added doctstring to Option.is_valid
Mostly finalized the config framework guts
Created the base Freeseer recording config
Updated the config, record, report, and talk apps to new config style
Reformatted imports
Options can now return a different value internally to the application

Added a `presentation` method that gets called iff. an option is
accessed via `config.<option>`.

This is useful when we want to store things like '~/Videos'. The change
lets the config file store that version while returning `/home/USER/Videos`
to the application when the dot-notation is used.
Videodir defaults to ~/Videos now
Switched to UNIX line endings