API isolation, test runner and TAB key

Hi Cesar,

I made some additions and modifications; primarily isolating the API from internals. 

### API Isolation

The use of the module `api.py` didn't quite live up to the expectations of that of an API, which is merely an interface to internals, and not something used within the internals itself.

A good analogy I find is to compare it to a character rig; in which the visual controllers drive the skeleton, but the controllers are never influenced by the skeleton. Here, the skeleton is the internals, and the controllers is the API towards the artists.

### Test runner

I couldn't find in which method you had your test executed, so I added a runner so tests are run with the same settings by every user. I also mocked missing modules here, as opposed to catching exceptions within each module.

### TAB

Finally, I added a feature for selfish reasons; I prefer quicklaunchers to be accessible via the TAB key. I updated the README to reflect its usage.

Best,
Marcus