Refactoring

Merge refactoring branch into master. Major rewrite allows for plugin to be built on more than just Bukkit.