Change uiaction to be 'augmented' function

A UI Action is now a function with properties attached, as opposed to
being a class with an 'execute' function. This allows using these
actions
anywhere a function would be expected without special handling.
Authoriser handles resolving without value

If promise returned from isAuthorised resolves, but without a value,
then the result is true (was previously rejecting)
Do not change URL if route not authorised
Handle rejected promise correctly in authoriser

Tests were checking for promise state incorrectly, meaning false
positives in tests were not catching the rejected state correctly for
authorisation promise.
Add data preloading and simple splash screen

To support preloading of data, to avoid flashes of unauthorised
content a message is now published, 'preload-data' that allows
applications to load any data up front, before the app is fully
initialised