Fix JS asNumber method
Add doc/hacking guidelines
Make BuiltinList.++ accept any iterable
Fix GC bug in for loops

The native for-do method did not save a stack reference to the object it
received from the iterator, meaning it could be freed if a GC run were
triggered by the allocation of the stack frame inside the block body.
This commit ensures that the argument object cannot be freed until it is
no longer in use.
Add doc/hacking to index
Update comments in mirrors.c for new methods
Add reduce method to built-in lists
Add methods to JS mirrors module to match native
Correct size of mgcollections sets
Add special case for StandardPrelude.new
Allow block information to be persisted to runtime

With this commit, the compiler (and dialects) can annotate a block with
an extra piece of information which will be available at runtime with
the extraRuntimeInformation method on the block. Where this annotation
was not given, this method does not exist.
Fix shadowing in logo_example
Remove old try-else/forceError methods

Proper exception handling has now been implemented according to the
specification, and these can be replaced in code with
catch()case()...()finally and Error.raise.
Remove old matchesBinding code from JS
Fix runtime exception/segfault in method calls
Save JS method parameter counts for use at runtime
Fix creation of MatchResults from blocks in JS

Previously, these were constructed with an empty JavaScript array as
their bindings value rather than a GraceList, causing problems later on.
Launch JS debugger on getting a non-Grace receiver
Remove private fields and default to confidential
Remove "private" field error infrastructure