Avoid creating Symbols based on user input

This removes a potential security issue: if untrusted users are allowed
to have templates compiled, they could use random reference names to
allocate memory that won't be reclaimed by the garbage collector.

This changes the API of the `method_available?` protocol a bit, passing
a String rather than a Symbol.