Cleanups and surface reduction

Cleanup `STVector256`, `STPathSet`, `STPath` and `STPathElement`. Specifically:
 
* Don't use friendship unless needed
* Trim down interfaces
* Make classes feel more like std containers

This change is going to conflict with David's #565. I will resolve the merge conflicts once that is merged in, but would like early review anyways.

@scottschur, @tdfischer at your convenience please.
I can see that 'i' is an int due to the diff.  But if 'i' were not an int a pre decrement would be preferable.  And due to the auto the next reader will not be confident that 'i' is an int.  I suggest using '--i' to reduce concerns.