Add additional CraftFakePlayer helper methods

Refactor fake player creation. Fake players can still be created
from mod EntityPlayers but now also with any username:

    getBukkitEntity(World world, String username, boolean doLogin)

getPossiblyRealPlayerBukkitEntity() is similar but will return an
existing Player object if the user is online, otherwise creating a
fake player. This is intended to allow mods to support player-
based permissions for world-altering machines, even when the player
who placed the machine is offline.
Add World trySetBlockAndMetadata for mod event support

Mods can call trySetBlockAndMetadata() instead of
setBlockAndMetadata() etc. to pass a fake player username
and send the appropriate Bukkit events. If the event is
cancelled, the call will return false, and the mod
should not proceed (i.e., not harvest the block).

Lightly tested - subject to change. Tested with block break
events using a quarry in a modified version of Buildcraft.