Split protocol definitions into terrible.core.extras

Also make core.js fully strippable by UglifyJS by avoiding adding to
the prototypes. This makes the entire core strippable for normal code.
Add enumerables scratchings