The application layer is responsible for defining high level logic which manipulates objects
and produces events for the eventual use by off-ledger systems such as wallets and DApps.
An application is added to the system by publishing a *Package*, which contain zero or
more *Blueprints*. Each blueprint defines object type information and logic which can create,
manipulate and destroy objects of that blueprint type.