Previously versioning depended on nose which broke setup.py if nose
was not already installed. Break version into its own module so that
it is not dependent on nose.
The nose.case.Test class wraps all tests and in doing so caused the
output to think all tests belonged to that class. Needed to access the
nose.case.Test.test member in order to get the actual test class.
Previously the width of the error message block was static and messages
would go outside the boundary of the border. Change the width to be
relative to make better use of the available space.