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
Fix rules for checking Borrowed types

Need to ensure that the scope of a let binding doesn't refer to names
used in the let bound value, otherwise we might update or destroy before
reading!
Add unique002 test
javascript: lift out javascript backend
javascript: lift out node backend
Merge pull request #1487 from raichoo/master

Lift out javascript related backends
Store kind in Pi binders

We need to know the kind for properly checking uniqueness under partial
application. Also, we need to propagate uniqueness right into the scope
of a binding - once we're in a unique context, any function we make has
to run in unique context or we might accidentally duplicate things.
Fix universe errors, update tests
Fix output of unique001a
Really fix output of unique001a...
Merge branch 'master' of github.com:idris-lang/Idris-dev
Merge pull request #1486 from edwinb/nulltype

Fix rules for checking Borrowed types
Merge pull request #1485 from gavlegoat/master

Added documentation to files in libs/base/Control/Monad
Merge branch 'master' of github.com:idris-lang/Idris-dev
javascript: fix backend to support new inliner
Merge pull request #1488 from raichoo/master

javascript: fix backend to support new inliner
Merge branch 'master' of github.com:idris-lang/Idris-dev