Fixed tests and bug in scale(). Added new tests.

Found that I could run tests by calling
python -m theory
(which runs __main__.py, and hence unit_tests.py)

This exposed some failing tests.
- Re-inserted the get_scale_* functions. I think it's better to expose
the _intervals data this way, rather than directly as a dictionary.
- There was an off-by-one bug in scale()
I removed the recursive part of the return statement (nit-picking!)