Custom elements overhaul

Overhauls the entire custom elements system, converting the save system to Google's Protobuf system on the way.

Major changes:
* State save and custom element save systems use Protobuf now (for robustness and upgradability)
* Custom elements UI switched to holo theme, added some descriptions to improve usability
* Changes state saves to store custom elements by filename instead of hash (for upgradability)

Todo for release:
* Clean up advanced tab of custom elements
* Fix UI weirdness on unmovable checklist
* Write scripts for upgrading .sav -> .sav2 and .ele -> .ele2
I was just moving this from collisions.c, so this is not actually changed, but looks like we use this for reversing the specified custom - non-custom collision types for when custom is the second particle.