Refactor SemVer accessing logic and "satisfy" operation, including:

- New SemVer.__len__ magic method.
- New SemVer.__getitem__ magic method for both integers and strings.
- SemVer: Save parsed components as a tuple internally, only define attributes for public.

- SemComperator: Add new '~' operator which "satisfies" by only comparing the first
  three required components of a sem ver and default to it if len(ver) == 3.

- Adjust doc strings.
- Adjust test to new behavior and add new tests.
Unindent doc strings by 1 level
Remove redundant `*` from `*args` parameters when only using lists