Only wrap HTTP 200 OK responses in an envelope

Allow error messages to come out as {'detail': 'error message'} while
successful response messages come out as ie {'tide_windows': []}
Factor out common code from TideLevels view

- `get_prediction_queryset`
- query parameter helpers into module

These are required by new TideWindows view, so factor it out into
helpers.
Wrote `split_prediction_windows` function & tests

Given a list of Predictions, containing multiple tidal windows, split
into the start & end prediction of each window.
Add `/predictions/tide-windows` view

- TimeWindowSerializer, which serializes a start and end prediction to a
  time window
- Update urls
- Add a ListAPIView called TideWindows, shares some functionality with
  TideLevels view
- Add tests