Actually make SemVer and SemSel immutable

- Subclass SemVer from namedtuple (I love this) and SemSel from tuple.
- As a result, don't allow string key access (like dicts) anymore, use
getattr() for dynamic access.
- Add error handling for nonsensical || separators.