Remove unnecessary unused attributes
Handle memory export rules

All memories are always exported into the header.  This is necessary
in order to make memories persist between cycles.  For some reason it
appears the other name rules weren't working so I've just stuck some
magic in there...
Add a number of "is_mem()" special cases

Note that I'm not going to actually implement all of these yet becuase
I've got to clean up some of the other signal handling code first in
order to normalize things a bit.

That said, I think all the "is_mem()" related special cases are now
in the code.
Remove node::ptr_func()

This was a bit of nastiness from a long time ago: essentially I used
to handle C++ name demangling by providing a function that returns a
pointer to each dat_t in the header, and then another function to
set/get for each size of dat_t.  This was super nasty because I had a
special case of iterating through nodes of a particular width.

The new code is significantly simpler: now I just emit a get/set
function for each node.  This will make handling memories a bunch
easier because I won't have to have a memory type for libcodegen.