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..?
I think you're modeling weather the wrong way. Let's take real life for example. When you poll(hint hint) someone for the weather, they tell you that's it's rainy, sunny, or thundering. This is weather. Duration is _not_ a property of weather, it is a property of whatever storm system _causes_ weather. In Minecraft there are no storm systems, so the actual instigator of weather is something that happens occasionally in per-world threads, therefore worlds do hold the weather duration in my eyes.