Refactor of CLI core.

Refactors core CLI code in order to make help a first-class module and
give more verbose error messages when the module or command is not found.

Example:
> sl help
<help about all modules>
> sl help cci
<help about all cci commands>
> sl help cci list
<help about the cci list command>
> sl invalid
<primary help block>

Invalid module: "invalid".
> sl cci invalid
<cci module help block>

Invalid command: "invalid".
Fixes bug on Python 3 because SystemExit does not have a message attribute.
TRIVIAL: removes needless debugging in a test
Fixes Typo
Adds some hardware filters
Moves hardware list description test to the right place
Merge pull request #97 from sudorandom/hardware_improvements

Hardware List Filters
Merge pull request #96 from sudorandom/core_refactor

Improved Help Command. Better Error Messages for invalid Modules/Commands
Removes support for Python 2.5

* Adds fallback to distutils if setuptools is not installed
* Removes the xmlrpc transport and moved the requests transport to SoftLayer/transport.py
* Adds make_rest_api_call to SoftLayer.transport and related tests. SoftLayer.metadata
  is currently the only thing that uses it. I think both of the transport types should have
  the same interface, but that's not the case at the moment.
* Removes requirement for simplejson if python version is less than 2.6.
* setup.py bails out early if the python version is less than 2.
Fixes the Metadata Manager JSON Decoding Twice
Pins prettytable to greater than version 0.7.0

I had issues testing this because the CCI I was using already had prettytable version 0.5.
Merge pull request #98 from sudorandom/remove_py25

Removes support for Python 2.5
Removes python 2.5 from README