Added generics

New optional syntax:
Version<Plugin> p = VersionFactory.getPluginVersion("SomePlugin");
Version<Server> s = VersionFactory.getServerVersion();

Also, I really dislike the name VersionFactory. It should probably be
changed to BukkitVersionFactory, since it is specific to Bukkit plugins
and servers. Altho, I also don't like how long it is. Plus, this is a
breaking change and would require all dependent code to be updated. So i'm
undecided.

All of this is probably overly complicated just because I wanted to
provide a little extra functionality built-in: And that is checking if a
plugin is even enabled along with the compatibility checks.
Version v1.1
Added more convenience methods.

public int compareTo(String v);
public boolean isGreaterThan(String v);
public boolean isLessThan(String v);

isLessThan() is a nice method to have for plugins and applications that
follow semantic versioning rules: MAJOR.Minor.bug

Where a MAJOR change will not be backwards compatible.

// Example:
Version<Plugin> wg = VersionFactory.getPluginVersion("WorldGuard");
if (wg.isCompatible("6") && wg.isLessThan("7") { }

The initial compatibility check succeeds for 6+
The secondary check limits the execution to only v6.x
and fails for v7.x or greater.

Added an extra, overloaded compareTo() that allows the user to simply pass
a String (for convenience... they don't have to first construct a version
object in order to call compareTo() ). This was inspired by Alkarin's
Version class. Which has a nice usage. And is more verbose. For example,
someone can simply call isCompatible(), but someone else later reading the
code may not immediately be able to decypher under what conditions
isCompatible() will succeed or fail. Whereas an equivalent of

compareTo("x.y.z") >= 0

is more apparent.

It allows the Version object to be used in syntacally different ways to
achieve the same objective: Developer's simple choose their personal
preference and style.
Merge branch 'master' of https://github.com/Europia79/Version