app: hide raw_app details behind create_async

Previously, create_async was a thin wrapper around create_primitive from
the raw_app module and did not hide any of the requirements of that
module. Now, create_async more closely resembes the create constructor.
In response to network events, a handler must return an optional policy.
If it wishes to send asynchronous updates, it can write policies to
send.update pipe.

A user can write a completely asynchronous application using this
constructor. In response to network events the application should always
return `None`, but is free to write as many policies as it would like
to the send.update pipe, both within the network event handler and
outside of it.