Avoid interior use of 'key()' setter-getter.

Instead, use '_key' directly, adding a '_must_key' property which
raises a NoKey exception if None (for use in cases which require a key).

Allows removal of the pylint 'maybe-no-member' comments.
Add tests for logic in Entity.__repr__.

Fixes #174.
Add assertion that query cursor is copied during '_clone'.
Rework Query._clone to avoid spurious copy of dataset.

Fixes #171.
Update docstring for 'Connection.save_entity'.

Indicate that upsert clears existing properties before applying those
passed to the API.

Fixes #167.
Unused import.

Incorporate feedback from @dhermes.
Update doctstrings for 'Entity.save' and 'Connection.save_entity'.

Reinforce that previously-stored properties which don't have values set
in the current entity instance will be removed.
Clarify docstring for 'Entity._must_key'.

Incorporates feedback from @dhermes.
Merge pull request #258 from tseaver/167-connection_save_entity

Fix #167:  Update docstring for 'Connection.save_entity'.
Merge pull request #253 from tseaver/174-verify_entity_repr

Fix #174: verify Entity.__repr__ logic
Merge pull request #254 from tseaver/171-rework_query_clone_deepcopy

Fix #171: rework query clone to avoid spurious copy of dataset
Adding pylintrc config and custom runner and making it pass.

Some key things to notice:
- The tools (pep8 / pylint) disagree about continutation lines.
  This is because PEP8 is ambiguous about "multi-line constructs".
  One of the examples for bracket indentation in the PEP is

      my_list = [
          1, 2, 3,
          4, 5, 6,
          ]

  but the PEP doesn't explicity say whether or not

      my_list = [1, 2, 3,
                 4, 5, 6,
                 ]

  would be allowed. As it turns out, pep8 (the tool) considers
  the latter to be a continuation while pylint does not.
- I changed all indentation where this was a problem and went
  with the preferred form

      my_list = [
          1, 2, 3,
          4, 5, 6,
      ]

- I made a _MetadataMixin helper class for methods shared between
  storage.Bucket and storage.Key. I did not refactor the affected
  tests but they do still give 100% coverage.
- I increased the maximum number of arguments from 5 to 10 and
  the maximum public methods from 20 to 30. Offenders were:
    - storage.connection.Connection.make_request (6 arguments)
    - storage.connection.Connection.api_request (9 arguments)
    - storage.connection.Connection.generate_signed_url (6 arguments)
    - storage.bucket.Bucket (27 public methods) and
    - storage.key.Key (23 public methods)
  I think refactoring these should be considered (though is not
  mandatory). I certainly don't know a good solution for the class
  public methods.
Addressing feedback in review for main pylint changes.

- Reverting refactoring changes of code re-use between
  storage.Key and storage.Bucket. These will be committed
  in a separate PR.
- Turning off the `no-self-use` warning for test code and
  reverting all the copious `@staticmethod` decorations in
  test and demo code.
- Removing a refactroing note about storage.bucket.Bucket.from_dict
  from the code.
- Fixing indent on a module attribute docstring in storage.key.Key
- Updating note in pylintrc files to make the intent more
  clear.
Merge pull request #238 from dhermes/large-style-changes

Large number of style-related changes to pass pylint
General outlook on JS regression tests.
Ditching environ module, allowing argparse to fall back to environ vars.
Local temp.