Fixing merge/split bugs

Merging machines now properly calls onPartAdded.
Instead of repeatedly calling onPartRemoved, added onMachineMerged()
abstract callback, so you can wholesale clear a machine when it has
been merged.
Adding NPE protection to onPartAdded.
Ensure client blocks connect on placement

Instead of re-adding the old hack, a new one! When receiving a
description packet on the client, if a multiblock part isn't connected,
attempt to connect.