Allow `:=` to assign to anything.

If the target is not a non-local variable, it behaves just like `=`.
Improve the symbol scanner.

 1. It should now properly recognize new local variables in unpacking assignments.
 2. It can now be extended by adding stuff to `Compiler.symscan`.