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 is this left generic? Are there times when we don't want strings?