Lexer: Fix ### from pos 0 not closing a multi-line comment.

The first character's processing was skipped, which is what caused this
problem. A test has been added to sanity.ly as well.
Add list::append, unbox templates in type matching.

list::append is a new function which adds a new value to a list. The value can
be anything that the list itself accepts. This also means that if the list
takes objects, that list::append will accept any value because it autoconverts
objects.

type_matchup in emitter now checks if the wanted signature is a template. If
it is, it determines what the template matches to, then proceeds. This allows
list::append to do type matching.

Ex:
    # Without the two above changes:
    list[object] obj_list = [1, 2, 3]
    obj_list.append("4")
    # Fails: T isn't str.

    # With the two above changes:
    list[object] obj_list = [1, 2, 3]
    obj_list.append("4")
    # Succeeds: T is object in this case, so the str is made into an object.

Additionally, the vm now exports what was once generic_assignment as
lily_assign_value. This was needed to get lily_list_append to work.
str: Add str::is{space,alpha,digit,alnum} via wrapping ctype function.