registration-extra-fields: Selectively require/hide registration fields

Extend the capabilities of the REGISTRATION_OPTIONAL_FIELDS
configuration variable, to allow to select, for each individual field,
if it should be 'hidden', 'optional' or 'required'.

Rename the configuration variable to REGISTRATION_EXTRA_FIELDS to reflect
the additional capabilities, and updates the defaults.

Ticket: MCKIN-168
registration-extra-fields: Add country/city to registration & UserProfile

As extra fields, configurable through the REGISTRATION_EXTRA_FIELDS
variable. Hidden by default.

Ticket: MCKIN-184
registration-extra-fields: Don't require setting variable from CMS

Studio also has a registration page, which uses the same account
creation page. It should be possible to use it without requiring the
variable from the LMS, as the fields are different. Fixes failing tests.
registration-extra-fields: Add tests for registration extra vars conf
registration-extra-fields: Fix pylint/pep8 violations in test file
registration-extra-fields: Cosmetic changes from code review

* Rather than defining a tos_not_required variable and testing not
  tos_not_required, define a tos_required variable and check
  not tos_required
* Indent of dictionary declaration
* Inline code from methods used only once in tests