Register local and vectorize functions with contexts

Based on our experience thus far, it is better to make explicit the context that a localized or vectorized function belongs to.

This PR adds two `Context` methods, `localize()` and `vectorize()`.  These take a standalone function and add it to the context's namespace.

Other improvements:

* reduce the number of roundtrips for calling localized and vectorized functions for obvious performance improvements;
* remove calls to `_execute()`, replaced with a call to `apply_async()`.
* Testsuite updated and works with new design.