Provide lily_load_copy_string, and use that for lambdas.

Because the ast's string pool may be resized by expressions within the lambda.
If that happens and the lexer has a shallow copy, then it'll result in the
shallow copy moving right under it. That would be bad.

The new function has the lexer create a deep copy (and the lexer is also
responsible for destroying it!), so that won't happen.
Lexer: Greatly simplify scan_string.

The original idea was good: Use strcpy to copy over a string that's simple
instead of a byte-by-byte copy. However, doing so resulted in a complicated
maze of reallocs and copy downs.

In the end, it's simpler to just copy byte by byte all the time (roughly 1/3
the size it used to be). Part of that reduction is from some tricks I've
learned since I first put in the function too.