Move check for Google Analytics inside method

Check for ``settings.GA_PROPERTY_ID`` inside the ``ga_campaign_params``
template tag instead of at the top of the module. This allows for the
setting to be changed at runtime for testing.

Addresses #660
Only use ``HttpRequest.body``

This is cleanup of a naive search and replace when replacing
``raw_post_data`` with ``body`` for
bd78d7df44b6d7db2e113ff64f2adfec6e64dd7f.

We're no longer supporting Django 1.3, so don't even bother checking
``django.VERSION`` to see if we should use ``raw_post_data`` or
``body``. Just use ``body``.

Addresses #660
Encode data in PUT request with test client

Encode data before passing it to the test client and set the content_type
argument to ``TestClient.PUT`` because, starting with Django 1.5, the
test client no longer encodes the data in the request for non-POST requests.

See https://docs.djangoproject.com/en/dev/releases/1.5/#options-put-and-delete-requests-in-the-test-client

Addresses #660
Use language code in URLs

The use of ``i18n_patterns`` and ``LocaleMiddleware`` required
by Django CMS >= 2.4 causes paths without a langauge prefix
to no longer resolve.  ``LocaleMiddleware`` looks for the 404
and tries to redirect to the language-aware path, but this
isn't great for our tests that expect a non-302 response.

We could have passed ``follow=True`` to the test client
methods, but in some cases, we need to explicitely test that
the user is not redirected.

The easiest way to make sure we're testing correctly is to
just test the language-aware path.

Addresses #660
storybase_asset.urls regexs should begin with '^'

If the regexs in storybase_asset.urls don't begin with '^',
they match paths like /api/0.1/assets/ASSET_ID/ when they should
only match /assets/ASSET_ID/
Use modified version of LocaleMiddleware

Use our own version of ``LocaleMiddleware`` because the Django version causes
requests to the REST API that return a 404 to be redirected to a non-existant
path.  For example, if the request to /api/0.1/stories/STORY_ID/
returns a 404 because the story with ``story_id`` of STORY_ID
doesn't exist, the middleware will instead redirect the user
to "/en/api/0.1/stories/STORY_ID/".  This path doesn't exist
as part of our API (which doesn't use language-aware URLs).

This is because of the way ``LocaleMiddleware.process_response()``
tries to automatically redirect from a non-language-aware path
to a language-aware path.

This is very similar to the problem described at
https://code.djangoproject.com/ticket/17734, but the fix doesn't
work because the URL configuration for Django CMS:

    url(r'^(?P<slug>[0-9A-Za-z-_.//]+)/$', details, name='pages-details-by-slug')

matches for language-aware paths of views that aren't
configured using i18n_patterns (in our case, the REST API).

Addresses #660