Implement new C++ data structure to power algorithms

WIP

Starts #216.
Obsoletes https://github.com/numenta/nupic.core/pull/217.
Why not have Synapse& be the return type here?