Add a booklet state for paging through information.

If one has a lot of information to display it's often useful to have a booklet state that allows the user to navigate back and forth between pages (or skip the rest of the booklet and go to the next state).

An implementation exists as part of the mAgriculture project but it's a bit hacky. In order to make it less hacky the function on states that returns the text to display needs to be allowed to return a promise (a small amount of work but will need careful testing).