Use __slots__ to reduce memory usage.

Saves around 10% of RAM when using many protos.
Merge branch 'master' into slots

Conflicts:
	palm/palmc/codegen.py
Merge pull request #15 from wmoss/master

Add a function to update one pb from another
Merge branch 'master' into slots
Add script used to check memory use

The results of running the script against the code in master and this
branch show around 32% less memory used in the slots branch:

    # 10k Test objects (master)
    $ python check_mem.py
    baseline 33300 7400
    10k 258136 232324

    # 10k Test objects (slots)
    $ python check_mem.py
    baseline 33296 7416
    10k 183844 157884
Merge pull request #19 from dowski/slots

Reduce Memory Overhead With __slots__
Make using __slots__ in generated code optional

f^
Add a function to expose the name of an enum, given the value
Don't generate the same __contains__ method for every field in the protobuf