Use Text instead of String

This branch replaces *most* uses of `String`s with `Symbol`, represented internally as `Text`. It also uses the `intern` package for contant-time comparison between `Symbol`s.

Fixes #37