Add tests for passing/returning function pointers.

These tests already pass.
Add basic support for function pointers.

TODO:
* These can only call C functions currently.
* The function pointer must be returned from another function.

I've also renamed the "C Tests" -> "C Unit Tests". This makes it easier
to avoid running the generator tests (which are slow).
Add built-in "getFunc" to get a function pointer.

This is currently given the id -1. In the next CL I'll make all
built-ins (e.g. errorIf) negative.
Move all built-in function ids to negative numbers

getFunc = -2
errorIf = -1

The first user function is now 0.
Long types now used "tagged arrays"

I want to be able to pass types to the NaCl module that are not natively
supported by Pepper (such as int64). Previously I used an array of two
elements for this, but now that I need more than just a 64-bit value
(e.g. a function value), I need to pass a tag as well.

So a 64-bit int is now ['long', <low bits>, <hi bits>].
Add FunctionUntyped, compatible with all fn types

We want to be able to pass JavaScript functions as callbacks to C
functions in the NaCl module. They must be stored in a handle, and
therefore must be typed. FunctionUntyped is a new type that is
compatible with the Function and FunctionNoProto types. This means that
any JavaScript function can be passed as a function pointer to any C
function.
Move id in message out of Embed, into Module.

Previously the Embed object would assign ids to messages. This won't
work for callbacks since we want to assign our own ids independent from
calls to postMessage.

This change makes all calls to Embed.postMessage require the message
have and "id" key.
Change var style.

Use multiple var statements, rather than a long chain. Not only is it
easier to read, but it is less buggy:

    var foo,  // <- This is a runtime error.
    var bar;

Whereas:

    var foo,
        bar;  // <- This is not.
        baz;

And baz will now be a global variable.
Cleanup Embed, add explicit callback registering

* utils.is{,Unsigned}Integer now checks for isNumber first
* renamed embed_ inside Embed to naclEmbed_
* Embed checks for cbId, the callback id. This is used to allow the
  module side to keep track of which callback request is being handled.
* Renamed Embed.postMessage -> Embed.postMessageWithResponse
* Added a new function Embed.postMessage that doesn't take a callback
  (used for handling callback responses)
* Added Embed.{register,destroy}Callback
Add JS-side of callbacks

You can now pass callbacks to a C function:

    // typedef int (*fp)(int);
    // void useFunc(fp);
    m.useFunc(function(x, result) { result(x * 2); });

You must use the "result" function to return values from the callback.
This allows for asynchronous responses.
Check that "result" function is called only once