Add FakeWhisperAPI for serverless development

When included after api.js, fake_api.js inits a FakeWhisperAPI.

FakeWhisperAPI inherits the methods of API, overrides a few, and
then usurps its place as the one true API.

Single device mode successfully "registers" against FakeAPI. Sadly,
multidevice mode has a recursive loop somewhere that makes the callstack
asplode.
Fix infinite recursion in ensureStringed(Array)

To ensureStringed(thing), you must first ensureStringed(thing)...
This was causing an infintel loop in multidevice mode.