Add working patient new in mock mode

- New route "/patients/new"
- Redirect to "/patients/<user patient id>" if user already has a
  patient profile
- Re-use "patientedit" page, allowing it to handle a profile creation
  (similar to "signup" page), add "isNewPatient" and "onSubmitSuccess"
  props
- After profile creation, redirect to patient view
- Add `api.patient.post`
- Merge user's "firstName" and "lastName" to patient attributes when
  displaying page, and omit them when saving to backend
Rework tidepool lib to match app's expected api

- In general, match what is described by `data/sample/*.json` and
  `mock/api.js`, `mock/auth.js`
- Creating/updating "user account" data for app means creating/updating
  both "/auth/user" and "/metadata/:userid/profile" for backend
- Creating/updating "patient profile" for app means creating/updating
  a "patient" attribute in "/metadata/:userid/profile" for backend
- When fetching "user" data, fetch both "/auth/user", and
  "/metadata/:userid/profile", and include "patient: {id: userid}"
  if profile has a "patient" attribute
- When fetching "patient" data, query "/metadata/:userid/profile" and
  flatten "patient" attribute with the rest (first & last name)
- If response code is different than 200 (or 201), return callback with
  error containing response status and body and let app decide what to
  do with it
- Temporarily disable `api.patient.getAll()` until implemented (produced
  errors in the console)
- Add log statements to see API calls being made
- Add `api.patient.post` (same as `api.patient.put` since user profile
  is being updated with a "patient" attribute)
Fix race condition on logout btw React and router

In the future, moving to a different router more compatible with React
(I have spotted one) will help avoid these things.