Fix CraftBukkit/Forge block placement merge. Fixes #286, #274.

ItemBlock onItemUse is patched by both Forge and CB. Upon placement
Forge calls a new method placeBlockAt(), which mods can override to
add tile entities or otherwise configure their placed blocks. CB
handles all block placement in processBlockPlace(), where it
gets the block state, sets the new block, calls the event, reverts
the block state if the event is cancelled.

Prior to the last three commits (180), MCPC+ would fail to send block
placement events for mods which override placeBlockAt(), such as
GregTech. The "Direct all BlockPlaceEvents to a singular location"
merge (181) fixed this issue, but introduced a regression where the mods
placeBlockAt() was never called, causing #286 and #274.

This commit merges Forge and CB block placement changes, fixing
block placement and BlockPlaceEvent sending. Tested with:
- GregTech computer cubes
- Factorization barrels, routers
- RedPower2 lamps

CB's processBlockPlace() is now only used for its own NMS-patched
items, that is: bed, door, hoe, lilypad, redstone, reed, seedfood,
seeds, sign, skull, and slab. This continues to be the singular
location of block placement handling for those items, and is
unaffected by this change. ItemBlock, however, now sends the CB
event (copied from first half of processBlockPlace()), then defers
to the mod's placeBlockAt(). The default placeBlockAt() contains
the second half of processBlockPlace().

Some mods implement placeBlockAt() expecting setBlockIDWithMetadata()
to succeed, and do not complete the block placement otherwise.
This fails on CB since it sets the block before calling the event
(only to revert if it fails). A this.worldObj.callingPlaceEvent check
is added in Chunk setBlockIDWithMetadata to fix this issue.