Added call to LightningStrikeEvent.
Handle target blocks gracefully (fixes #172).

Sometimes, player.getTargetBlock() throws an IllegalStateException. This
is usually the case if players stand at height 127 and look up when
left-clicking. The exception can be safely caught and treated as an
invalid block (air in this case).
Added block placement handling for buttons (see #119).

Moved setAttachable() for Buttons and Levers to BlockAttachable.
Added block placement handling for beds (see #119).

Handling of breaking beds not yet implemented.
Implement container blocks dropping their contents.

Fixes containers losing their contents and dropping incorrect blocks when
broken.
Handle status packets asynchronously.
Updated remapper (fixes #268).
UpdateBlockEntityMessage protocol courtesy of @Aaron1101
Progress on Skulls. Still WIP.
- Skulls place with correct position.. half the time (wut)
- TileEntity is created on place, but I can't set any of the data needed (halp)
  - Should save/load properly if it actually gets set
- ItemMeta should be implemented properly. Not tested yet.
Add in rotation logic.

Due to the client not recieving the packets for entity updates, this won't show as actually rotated (but it's in the NBT)
Change Player.sendBlockEntityUpdate to Player.sendSkullChange (packet is used for more than just skulls, derp), and also fix the operation
Error if not the correct materialdata
Derp, actually return the drops for a skull
Changes to storage of Profiles
- Player profile is now saved and loaded, along with textures etc. (not yet tested)
- Not sure how Vanilla implementation gets profile for offline players etc
- Moved some static methods to BlockSkull
Don't update twice on place
TODOs for Full profile implementation (same as what's on the blocks)
This moves code for creating/saving NBT data for a PlayerProfile to the profile. It also updates the MetaSkull to use 1.8's format (same as the block)