Added ability to publish patches for non-latest version

Also, started to work on semantic versioning check, more specifically, started to implement comparing function types for compatibility.
Why not make this an ADT?

```haskell
data Index = Major | Minor | Patch | Other Int
```

Is there a name for things once you go past three?