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 basically, all functions, except `compute`, are [functional](http://en.wikipedia.org/wiki/Functional_programming), so they can be used on state outside of the TM instance. `compute` is the only function that actually modifies internal state. This makes it easy to transform the TM into a fully functional class later on (if we want to).

At least, that was my rationale for doing that. I could just combine them for now, and separate them out later if we need to. What do you think?