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.
It might need tweaking.

Change:
```
std::remove_reference<Container> const& cont() const;
std::remove_reference<Container>& cont();
```

Add:
```
template <class Args...>
const_container (Args&& args...);
```

Then derive from const_container<std::vector<...>&>