Branch nnst-impl to deal with NNST

The changes to NNST are much more drastic than expected. I am branching the code so that my other members do not get uncompilable code.
NNST FaceMetric multi_index

Due to the changes in the FaceMetric multi_index, I have to make a lot of changes to the NNST code. I have thus far commented the sections that are giving me issues. However it is clear that I will have to change a lot of the NNST code because I have changed a primary structure to deal with out particular issues.

As always this continues to be interesting.
Creation of FaceMetric files

The FaceMetric class was getting incredibly complicated and should have probably had it's own files from the beginning. This class contains a lease time, destination address and interface to use for a particular NNN address.

The NNST Entry now has a multi_index_container of FaceMetrics for each possible destination.

The NNST continues to be built from NNST Entries.

Even though we are on a branch, the code compiles successfully.
Testing FaceMetric

Finished the initial test file for FaceMetric, specifically the print function which was giving issues at the beginning.
NNST Entry implementation

Changed the printing function in FaceMetric to make more space for the columns.

Modified the nnn-nnst-test file to create more than one FaceMetric.

Defined the currently required methods for the NNN NNST class.
Restructure of NNST Entry

Continue to pass things to the cc file to be more readable.
Change to the FaceMetric less

I was forced to change the FaceMetric less (<) so that the NNST Entry multi_index could function as desired. It caused some changes in NNST Entry, but most of these changes should be local. Still requires testing.
Preliminary nnn-nnst-entry tests

It seems the initial tests for the NNST Entry are going well.
Fixed and tested NNST Entry printing

Fixed a slightly troubling issue I was having with printing a NNNAddress due to the was that C++ streams are used. I have been able to make the printing much nicer and have added the tests to print the Entry by order of lease, face and PoA address
Finished testing, printing

Changed the printing again to deal with the case of the Entry having no Face data due to timing out. Am yet to test the update procedure.

The NNST Entry tests now include retrieving PoAs and deleting of Faces and PoAs.
More NNST Entry tests

I think that with this, I am finally finished with the NNST Entry. Now for the fun part with the Trie.

This commit includes print by metric, updates and everything else. I have had to use replace in the multi_index_container and this will probably bite me later on.
NNST implementation

This are all the current methods I think are required for the NNST. I have yet to test out the implementation. I had to change the NNST Entry printing functions to be able to be used by the trie implementation.

Much to my surprise, the trie implementation used didn't require modification.
NNST test done

These are the working files for the NNST
More NNST drama

I was forced to make the cleanExpire functions work on the NNST. This has meant a further rewrite of the NNST code and the NNST Entry code. I also checked the erase iterators in the Entry and found inconsistencies that have been updated.

The trie does not apparently permit me to have an empty trie, so I will have to reevaluate the code to see what I can do.

Updating leases is currently not supported as it requires a connection from the NNST which I haven't written yet.

The test code has been updated to reflect the changes.
Fixed NNST Entry deletion

I had used the Add function in the NNST to insert the PoAs without taking into account that I could just as equally add only one PoA at a time. This lead to the particular bug where a single added PoA was never queued for deletion.

Searching for the bug I also made use of the NS_LOG_FUNCTION which should really be included in all of the heavy classes for debugging purposes.

With the changes, I was able to use the NNST Entry freely. However, since the NNST is the one making the scheduling, I will need to make a wrapper in the NNST for these methods.

The nnn-nnst-test.cc file has been modified to take into account the new methods I am using.
NNST basic testing and lease implementation

This includes the test for updating leases. I still don't know if I will need to search via a PoA, but that will come up in the next part of the implementation.

For now, I believe the NNST is done. Of course that is rarely the case.