Initial commit

Simply filling in an empty file to initialize a root for the repo.
Class and function for Tor Versions

Starting with a simple (but non-trivial) class that will be needed for handling
PROTOCOLINFO responses. This is partly to establish conventions for
documentation and unit tests.
Removing checked in binaries

Forgot to establish a gitignore before the prior commit. An extra copy of
run_tests.py also snuck in (haven't a clue how).
Subdirectories for integ and unit tests

Unit and integration tests will be separate subdirectories of test.
Using Pascal Case styling (unscores) for variables

According to PEP8 [1] both functions and variable names should use the
underscore naming convention (ie, 'my_var') rather than camel case ('myVar').
This is a little weird for me and python standard libraries use both, but I see
a readability advantage to this for functions and my previous approach of using
camel case just for variables is kinda weird. Hence switching to the 'right'
convention while the codebase is still tiny.

As an added bonus this conforms with torctl...

[1] http://www.python.org/dev/peps/pep-0008/
Running tests based on input arguments

Making the test runner accept arguments for the type of tests to be ran. The
integration tests especially will take a while when they're implemented so
letting the user specify the use cases for those.

This included copying and refactoring some basic utilities from arm for
enumerations and terminal text attributes.
Adding gitignore for pyc and vim swap files
Adding logging utility

Borrowing the logger from arm, with some refactoring to remove unneeded
functions and make it conform with this project's coding conventions.
General system utilities

Adding some simple utility functions that I'll need later. These are rewrites
of their arm counterparts, which I wrote before discovering the subprocess
module.
First draft controller connection

This is a functional rewrite of the sendAndRecv TorCtl functionality. It
follows a similar pattern, having a couple threads to continually pull the
socket and provide event notifications. This still needs testing, better
exception handling, and some more thought about the ControlMessage api.
Moving ControlMessage and parsing into types

The ControlMessage is a standalone class so moving it into types. This is both
appropriate for the types module and will make testing easier.
Basic unit tests for ControlMessage

Just some sanity checks that ControlMessage parses common GETINFO responses.
I'll expand on these including some error cases next.
Protocol error tests and fix

Expanding the ControlMessage unit tests to cover causes of protocol errors, and
fixing an issue that this revealed where it was possable for a malformed line
prefix to go undetected (if, say, a dropped character caused a valid line
divider to fall into that place).
Tesing and fix for disconnected socket reads

Adding a unit test and fix for when the input file is derived from a socket
that's never been connected. I'm suspicious that this won't catch disconnects
that accur a little while into the socket's use, but I'll need to implement
integration tests for that. Guess that's next...
Adding util for handling configuration files

Integration tests and other things will be stored via configuration files
(hardcoding data in source is a horrible thing and you have no excuse unless
you're writing in LISP). This is being stolen from the arm codebase, with the
code refactored for this project's conventions, some fixes to better generalize
the util, and vastly improved documentation.

Tom has been using the config util a bit for his torperf rewrite and having
difficulties so hopefully this will make its usage easier.
Running tor instances for integ tests

First draft for the startup/shutdown of integration tests. This...
- makes a test directory
- generates a torrc
- starts a tor instance, waiting until its bootstrap completes (timing out if
  it gets stuck)
- runs tests (not done yet - those are next)
- shuts down the tor instance

This'll certainly go through some refactoring to better modularize, but it's
functional as-is.
Moving integration test init/shutdown into class

Making a Runner class which will be available to integration tests. This both
better modularizes the code and will allow for us to give runtime context to
the tests.
Integration tests for stem.util.system functions

Very, very basic tests that the tor process is running and available.
Adding BSD compatability to system.is_running

Copying over an arm fix I made earlier this week from
util.torTools.isTorRunning so that it would work on OSX/FreeBSD/OpenBSD.
Adding get_pid and get_bsd_jail_id util functoins

Stealing arm's getTorPid and getBsdJailId from the torTools util, generalizing
both functions to be for arbitrary processes rather than just tor. This also
adds unit tests for get_pid and a simple exercise of get_bsd_jail_id (I can't
really test the later since I'm not on BSD).