MAJOR REFACTOR: Adding persistent context

- 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
- 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
- Modify --start-with so that it can be used with --this. i.e. `catkin
  build --start-with --this` will build the package containing the
  current working directory and all those which depend on it
- Added a check for `catkin_make.cache` and `catkin_make_isolated.cache`
  wherein catkin build will abort if these files are found and explain
  to the user that he or she needs to use a different build directory
- Added a check for basic build configuration flags which could change
  between build (see catkin_build/build.py). This checks against a
  hidden file called `.catkin_tools.yml` in the _buildspace_ which
  always contains the last values of these options:
  - workspace
  - install
  - install_space
  - devel_space
  - source_space
  If any of these are different, then catkin build reports and error and
  tells the user which are different
- autopep8-based fixup