base: Make it easier to use proxies without CamelCase

 * Support proxy.call(name, args)
 * Support a "signal" event on proxies to catch any signal

Together with the 'data' field already on proxies, this makes it
possible to use proxies without CamelCase properties, methods, signals.
It's slightly less convenient but works well.

In addition this allows calling methods on proxies that are still loading.

Fixes #1500