make body type for opium app

just keep the types simpler in the mli
refactor app interface

Before constructing an opium app was very ad-hoc and ugly.  Now
constructing an Opium.App.t is purely functional. The interface is still
ugly but you can build something decent on top of it now.
export middleware in std

adds middleware to a routine
update examples to use new Opium.App.t
add more options an opium app
start doesn't take monolithic args

just immediately runs an opium app (translates to rock app in the
background)
export port builder
update hello world example