New Temporal Memory implementation

Progress on https://github.com/numenta/nupic/issues/1086.

Still working on end-to-end integration tests, but it looks like the basic functionality is working.

Please review: @scottpurdy 

@subutai If you get a chance, take a look at the generated documentation, and see if it all makes sense to you at a high level. I've already shown you the design beforehand, so nothing should be too surprising there.
So as we discussed, you should be able to leverage the test runner to capture or not capture the output from the tests. Then you can just print whatever you want in the tests and use the TestCase methods to get the test name or description if you want to print those (the name will be printed by the test runner but not if you execute the file directly):
https://docs.python.org/2/library/unittest.html#unittest.TestCase.id

This doesn't handle different verbosities for the output but if you can avoid needing that it simplifies things a lot.