Bug 881469 - [Messages] Implement Navigation object

This commit implements a Navigation abstraction to handle navigating between
views. It also introduces the concept of views.