Refactored SearchState: using a std::vector instead of a std::queue instead.
SearchState has also been given more functionality.
Merge branch 'dht'