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..?
It's hard to tell what a lightning bolt will strike, until it has struck.

In the current (1.8) minecraft code, lightning will pick a random block, find the highest block at that location, then search for nearby entities, if none found, it strikes the ground.

Is this event intended to be a pre event, that is to say an event that can modify if and where / when a lightning bolt will strike, or a post event that notifies where lightning has struck, and what it hit?

If pre-event it might still be useful to tell if an entity was being targetted, but it would be better to return the entity instead of a boolean, if post event, return ALL the entitys that were / about to be struck.

I'm wondering if the post event is needed, or if it would be a variation of a damage event, with special behaviour if the damage was from a lightning bolt. Noting that this *isnt* how minecraft currently works, and that minecraft has a separate method to strike the entities, and could possibly strike entities without causing damage at all.