Each class subscribes and unsubscribes to its own messages.
Put a semaphore around mHandlers as things could be subscribed or unsubscribed from other tasks.
The AppManager now creates and destroys apps

- we currently only have one running app at a time, but we could allow
more (most recent n apps or something)
- The App Manager doesn’t know about specific apps it’s just given a
function pointer that can create them
The data store returns copies of its data and protects access with a semaphore.
Move setup into the TiLDATask
The semaphores should be mutexes.
We are now back to allowing multiple apps, but only if they tell us to keep them alive.

The home screen app as always kept alive, for example.
Fix an include.
The flashlight task doesn't like to be killed.
Minor tidying to the app manager.
Need to remove the button subscription queue from the button interrupts on destruction.
Revert "The flashlight task doesn't like to be killed."

This reverts commit c6b59422f53bd5d9406fe422d8c41fe48162b9ac.
Merge branch 'master' into improv
Add app list to app manager.
make it clear in the logs that we're deleting the app.
Use the app_ctor typedef on the Tilda class.
merge
Merge pull request #67 from emfcamp/improv

Several improvements (app manager and beyond)