Support casting region to a string to get value.
Abstract the logic of getting template regions and params

This will allow subclasses to slightly change the way they store regions
(like in the scanner)
Add a magic setter on scanner to allow region changes with prop names

Fixes inconsistensies with getting/setting region values.
Update scanner phpDoc with new array syntax
Fix Scanner region initialization so it doesn't include an empty array