Refactor node/kbucket.

### Changelog:
* Leverage `Contact.__eq__` to remove and exclude contacts directly via Python's `list.remove()`.
* Avoid re-building list when removing contact; delete in-place.
* Raise `ValueError` if contact to be removed is absent from bucket. Fix #535 and enable relevant test.
* Groom code and docstrings a little.
* Remove execute flag from file.

(Please review; I 'll squash PR afterwards.)
The `BucketFull` exception is caught by `node/routingtable.py`, which also splits the bucket. Perhaps the bucket-splitting should be moved into `node/kbucket.py`; I 'll look into it when I review `routingtable`. The present PR was about refactoring and unit tests only.