Step 3: Use state inheritance (nesting) to compose views
  * Create an abstract "base" state that populates the "header" view
  * Note: "base" state has no URL (route)
  * Create a "base.home" state that populates
    the "default" and "message" views
  * Create a "base.tasks" state that populates
    the "default" and "message" views
Step 5: Use state transitions and state params to manage state data
  * Create an abstract "base.tasks" state that populates the "default"
    and "message" views
  * Create a "base.tasks.list" state that populates
    the "filter" and "list" views defined by the
    "base.tasks" default view
  * Use the state resolver to initialize data for use in the state
  * Use stateParams to pass data during state transitions