Heuristic

The heuristic branch ended up being a total implementation for the project. If I continue this I'll need to 
a) be more diligent with small branches 
b) be more diligent about small commits 
c) make the library more generic 
d) update the library to be all C++11/14(is there anything in14 that would be helpful?)
e) reduce the amount of ram needed
f) use better heuristics using frequency distributions
g) find a way to not simply attack the key (key of length 11 has 11! possible configurations of columns, what about key length = 25?, not scalable)     :(