Handling version 1.1 of bridge extrainfo descriptors

Version 1.1 of the bridge extrainfo descriptors adds a new 'transport' field.
I'm not entirely sure yet of its attributes, but recognizing the new descriptor
version and parsing the field.

I'm also expanding the tests a bit so unit tests cover bridge extrainfo
descriptors, and parsing the metrics header line rather than just doing string
matches.

This is to address...
https://trac.torproject.org/6257
Created proc.py testing code and imported unit tests to run_tests.py.

Wrote mock_get_lines to mock the proc module's _get_lines
function. Completed unit testing code for proc utilities such as
get_system_start_time, get_physical_memory, and get_memory_usage.
The test_get_memory_usage function was written to test the functionality
of mock_get_lines as it is the only function that takes in multiple
line prefixes.
First complete draft of proc unit testing code.

Most mocked functions utilize mock_fn(), which checks for expected input
and either returns the appropriate output given the mocking or lets the
original function be called.  This is necessary in cases where outside
code calls these functions and the mocked version is not able to supply
them with the needed output.  Private methods in the stem/util/proc.py
file are not tested, nor is is_available().  This decision was based on
the conventions set in system.py testing code.
First code review changes.
Made additional changes regarding sphinx documentation. This completes Code Review 1.
Added integration tests for proc.py.

In the cases of test_get_memory_usage(), test_get_stats(),
test_get_connections(), there were issues of doing direct tests. First,
the only way to have values to check against is with code written
in proc.py, which would mean we are checking the code against itself.
Second, the results of these functions change frequently, so by the time
the functions are called, their results will differ from the expected
values. To get around this, we simply checked that these values were
nonzero.
Removed commented out code that was forgotten.
Revisions for proc unit and integ tests

Lots 'o changes, most just nitpicks to satisfy my OCD. The main functional
changes are just...

* The mock_fn() and find_subsets() helpers are useful for other tests so moving
  them to the mocking module. The authentication unit tests, for instance, had
  a helper that this has replaced.

* The default target for the mock_fn() calls doesn't seem to be needed, and
  could mask issues that prevents proper system abstraction (ie, if we're
  passing through to os.readlink() then we probably won't notice that the test
  only works on Linux).

* The stem.util.proc.is_available() check was broken since we were using the
  function as a boolean, which is always True...

  >>> def foo():
  ...   return False
  ...
  >>> bool(foo)
  True

* We created a controller to spawn a control connection, but forgot to close
  the controller afterward.

* Test broken if we were running without a control port (for instance, with the
  RUN_SOCKET target).
Unit and integration tests for stem.util.proc
Replace calls to os.uname() by platform.uname()

os.uname() is unix-specific, while platform.uname() is a more portable
uname interface that would also work on windows. And platform.system()
== platform.uname()[0].
Fixed bug that util.system.expand_path does not expand tildas on windows
Fixed bugs in calls to test.runner.skip()
Fixed test_expand_path_unix, and added test_expand_path_windows

test_expand_path_unix was changing os.path.sep in order to change the
path seperator used by os.path.join. However, this did not work. The
path seperator was hardcoded in os.path.join, which is posixpath.join
on *unix systems and ntpath.join on windows. We now mock os.path.join
to use posixpath.join or ntpath.join in different test cases.
Replaced a hardcoded path in test_relative_cookie
Skipped some unrelevant integ test cases on windows
Minor formatting tweaks
Testing fixes for Windows
Add GetConfResponse class for parsing GETCONF responses
Add unit tests for GETCONF parsing
InvalidRequest now inherits from ControllerError

Moved stem.response.InvalidRequest -> stem.socket.InvalidRequest and made it a subclass of stem.socket.ControllerError