Implement new C++ data structure to power algorithms

WIP

Starts https://github.com/numenta/nupic.core/issues/216.
Hmm, that's a good point. However, I want this function to create a new instance of `Activity`, and return it. But if I returned it as a pointer or reference, it would be out of scope by the time the caller could use it. [This StackOverflow answer](http://stackoverflow.com/questions/3431484/when-to-return-a-pointer-scalar-and-reference-in-c) recommends returning by value, and letting the compiler optimize it away (and maybe declaring it `const`). What do you think?