[Warwickshire] cobrand work

First Warwickshire styling

 - imported WCC's header and footer files
 - Use Warwickshire colours for page elements
 - Include FMS elements in header
 - Use correct Warwickshire colours on map
 - Use full-screen map on desktop.
 - Improve display of homepage elements
 - Ensure correct classes are added to body tag
 - Make sure site header has correct height on front page
 - Tidy-up of unused header content and wrappers
 - Improve display of map
 - Position map beneath other elements

Improve map display

 - Take some CSS from Warwickshire styles to ensure its applied
 - Fix container widths on map page
 - Make sure map wrapper is the correct width
 - Add style overrides to match  Warwickshire.gov.uk
 - Ensure map controls are visible

Nav and mobile styling

 - Make sure sticky sidebar nav is usable
 - Improve mobile front page
 - Ensure map is full-screen on mobile
 - Improve front page display on mobile
 - Fix map display on desktop
 - Fix Warwickshire and FMS nav on mobile
 - Add viewport meta tag for mobile devices
 - Tighten up vertical spacing on front page
 - Fix header height on tablet size screens
 - Set pan/zoom position in CSS, not JS

Styling tweaks

 - correct styling of nav for wider screens (previous hidden by media query)
 - Add draft Warwickshire FAQ
   - Fixes https://github.com/mysociety/FixMyStreet-Commercial/issues/611
 - Warwickshire. remove all reports link as requested.
   - see https://github.com/mysociety/FixMyStreet-Commercial/issues/609
 - Update WCC footer
   - see https://github.com/mysociety/FixMyStreet-Commercial/issues/597

Bring WCC css locally, and override

 - Override for
   https://github.com/mysociety/FixMyStreet-Commercial/issues/612

 - favicon
   https://github.com/mysociety/FixMyStreet-Commercial/issues/616

 - update contact details
 - custom FAQ

 - fix padding on mobile
   https://github.com/mysociety/FixMyStreet-Commercial/issues/617
Open311 Endpoint

Subsystems include

 * ::Spark encoding conventions for xml/json
 * ::Schema using Rx to validate form of inputs and outputs,
      including validation for, e.g., dates and CSV as part of Open311

Handles following paths:

 * Open311 attributes for Service Definition
   http://wiki.open311.org/GeoReport_v2#GET_Service_Definition
 * POST service request
 * GET Service Requests
 * GET Service Request

Objects:

 * ::Service
 * ::Service::Request
Open311 Endpoint mySociety extensions role

 * Get Service Request Updates

This requires a new object ::Service::Request::Update, which of course
is not part of standard spec.  So, in order to make the core not too
contaminated by :

 * the endpoint should instantiate ::Service::Request::mySociety objects
 which know about updates
 * have added a learn_additional_types callback from Schema to Endpoint,
 so that core doesn't need to know about /open311/service_request_update
 * (but ::Spark knows about the exception for updates... meh, but is 1-line)
Open311 Role for accepting default config file

See also MooX::ConfigFromFile, but that's underdocumented and
seems overengineered -- may be worth implementing if requirements
become more complex however.  (See also Config::Any, which is
well worth doing in future, using YAML only reflects current
usage in FMS though.)
Open311 Warwick (Exor) Integration

 ::Integration::Warwick subclasses ::Integration::Exor
 refactor request_class and new_request
 Exor service
 Warwickshire updates retrieval, with datetimes
 stubbing out of Oracle constants, for local testing

We also edit FMS's core PopulateServiceList routine to hide system
fields from FMS:

Bromley/Warwickshire send metadata in their services/FOO.xml
advising that you can pass, e.g. attributes[easting].

FMS by default shows all of these to the user to fill in, however
we don't *want* the user to supply these, rather they are added
by the cobrand.

Bromley had an exception for this (keyed by $body->areas->id).
We write this more generally for Warwickshire too, keying instead
by $body->name (as this is far less likely to be overridden for
installs using global or custom Mapit's)
Open311. Remove extraneous 'jurisdiction' parameter

This parameter was added in 3eb93cea4acd5f9b76efdc0910466363a0b9b445
and is superfluous (as jurisdiction*_id* is the correct parameter,
and is already sent.)  That commit mentions only api_key so understand
this wrong parameter is an artefact.
Open311 tweaks to get  round-tripping working

If https://github.com/mysociety/fixmystreet/pull/792 is accepted
then this should be rewritten in terms of that.
Open311: FMS <-> Open311 Endpoint End to end tests

Uses LWP::Protocol::PSGI to avoid having to spawn external processes
in order to test these end to end.
[Warwickshire] Integration bits during/after visit

 - Tweaks required to get things working in WCC environment
 - update Open311 to onsite changes
 - updated Open311 parameters after WCC's Bentley and County Highways workshop.
   - ... including ce_cpr_id
[Warwickshire]. PopulateServiceList deletion tweak

as WCC is (during beta) mixed email (manually updated) and Open311,
override the behaviour to delete contacts not returned by service list,
to ignore ones that look like email addresses.
[Warwickshire] raise z-index of map, working around chrome bug

works around
https://github.com/mysociety/FixMyStreet-Commercial/issues/614

(This is a chrome bug, but as it doesn't happen with standard
FMS, we investigated further with @stevenday and @zarino.
For reasons I don't understand, the issue is fixed by:
 - removing negative z-index from map
 - this then makes the site-header not display, so we set
 position:relative -- not having done this before might be
 the reason for the previous negative index? )
[Warwickshire] beta notice

see
https://github.com/mysociety/FixMyStreet-Commercial/issues/596

(in separate commit with inline style, to hopefully make easy to revert)