Move global argument code to seperate file.
Introduce XylemError as common Exception base class.

Having a common base class allows users to catch all xylem
related exceptions in one handler.
Somewhat general purpose config_util module.
Unit tests; new test dependecy `testfixtures`

 - extensive tests for config types
 - tests for other parts of config utils are still TODO
Use new config_util module to declare configuration

- new module `config` describes the global configuration

- `config` includes the logic to compute soruces and cache folders given command
  line arguments and options

- `arguments` module features help action, which uses pydoc.pager to display the
  help in a `less`-like scrollable manner on pty's

- help output includes new section `config arguments`, describing the arguments
  that correspond to a config file entry

- commands have a new hook to add to the config description; some logic common
  to all commands was moved to `commands.main`

- context objects like `InstallerContext` and `SourcesContext` now take a config
  dictionary as argument, which defaults to the global config sigleton if not
  passed explicitly

- high-level API used by the commands (`update`, `resolve`, `lookup`) is also
  parameterized by an optional config dict argument, which defaults to the
  global config
fix doc generation warning
fix docstring typos
update apidoc
Move yaml utilities to new `yaml_utils`; support dumping ConfigDict
Fix outdated imports.
Fix --os-override parsing.
help output adjustments
fix pep8
Merge pull request #17 from catkin/config

Config utilities for describing config files and CLI arguments

- new module `config_utils` for a general purpose tool to describe config files, parse 
  yaml config files and expose specific arguments to the command line; includes some
  unit tests for the config item types

- new module `config` describes xylem's global configuration; includes the logic to 
  compute sources and cache folders given command line arguments and config files

- new module `arguments` for global command line arguments (moved from `utils`); 
  interacts with config to include and process global config arguments

- new module `yaml_utils` contains customization to loading and dumping yaml (moved
  (from `utils`)

- `--help` argument now uses pydoc.pager to display the help in a `less`-like scrollable 
  manner on pty's

- help output includes new section `config arguments`, describing the arguments
  that correspond to a config file entry

- commands have a new hook to add to the config description; some logic common
  to all commands was moved to `commands.main`

- context objects like `InstallerContext` and `SourcesContext` now take a config
  dictionary as argument, which defaults to the global config singleton if not
  passed explicitly

- high-level API used by the commands (`update`, `resolve`, `lookup`) is also
  parameterized by an optional config dict argument, which defaults to the
  global config

- Introduce XylemError as common Exception base class. Having a common 
  base class allows users to catch all xylem related exceptions in one handler.