Add Borrowed types

This allows unique values to be inspected, but not updated or
destroyed. A 'Borrowed' value can be pattern matched, but cannot be used
on the right hand side, nor can any Unique values contained in the
pattern.
Add missing test
Fix borrowed type check

Actually a borrowed type can be used as many times as you like, it's
just the names inside the pattern that can't be used without being lent
first!
Merge pull request #1484 from edwinb/nulltype

Add Borrowed types