Replace plates with crispulent

Plates was giving me a bit of trouble. I ran into a bug, and I think it took me
less time to make crispulent which does what I need rather than read through
a few-hundred-line module and then try to find the bug and fix it.

Some terrible stuff went on in this commit. but I don't want to figure out how
to make crispulent into a module right now.. for now I'll just symlink it and
take the pain of doing it wrong so I can get more work done. This is a simple
and unforgettable fix.
Handle null/undefined strings in htmlEncode

I'd like to say the caller should always pass a string.. but it's just not going
to happen sometimes causeing annoying bugs. I think it's better just to protect
ourselves from this case all together.. It feels bad, but it's going to avoid
future bugs which is good. blah :/