Add Weather API

Added weather listeners. Also I decided to add the api.weather package and the Weather/WeatherType files so that you can easily access the current weather from World with something like getWeather() that would return a Weather object that could be manipulated. This in unlike Bukkit where you had the hasStorm() and isThundering() in the World methods but no direct way to get weather. 

Any ideas about this? Would it be nice to have a world.getWeather ability? If so where would that be? Extent? World? etc..?
Can we really accept real world times or would they just be converted to the server ticks internally with the usual problems (which is why ticks should be given directly)? If it actually is safe to use real world times, a `TimeUnit` should be given as an additional argument to specify which time unit (seconds, minutes, hours...) was given.