MAJOR (WIP): Reorganized to enable 'config' and 'info' verbs

- Added context-aware building
  - `catkin build --this` will determine the package name of the package
    containing the current working directory and build it
- Added `catkin config` verb
  - Unified the build Context class to cover the config options, now in
    catkin_tools.context module
  - Context class now has *_space_abs attributes to distinguish from the
    relative paths stored in the configuration
  - This verb has most of the "configuration-type" options which were in
    catkin build. It also has complementary options which un-set these
    options. For example, `--install` also has `--no-install`.
  - Calling config with no options just displays the config
- Added `catkin info` verb
- Build configuration is now stored by the `config` verb
- Re-worked the `catkin clean` interface to be more intuitive
- Refactored many of the utility functions from `catkin build` to
  separate out their build-specific functionalities from functionalities
  which are useful for other verbs.
  - color.py
  - context.py
  - common.py
  - run*.py
- Moved resultspace-processing functions into resultspace.py
- Moved argument parsing from catkin_build.common to
  catkin_tools.argument_parsing
  - Modified _extract_cmake_and_make_arguments to return [] only if
    `--no-cmake-args`, `--no-make-args`, `--no-catkin-make-args` are set
    and `None` if they are not set and there aren't any special
    arguments. This means that a parsed argument of `cmake_args = []`
    means "clear the cmake args" and `cmake_args = None` means "don't
    modify the cmake args" (similarly for make and catkin_make args)
- Removed *space designation from `catkin build`
- Other configuration options in `catkin build` are only applied
  temporarily. If the user wants to save them, the `--save-config`
  option can be used.
- Main help now shows info for each verb and is sorted alphabetically