Support borrowed references as a return type

Now that Rust can infer lifetimes, we can support borrowing slices out
of the input string.