Landmark upgrades

This adds two very simple concepts to landmarks:

  - You can now delete from `LandmarkManager`

    `del image.landmarks['label']`
  - Iterating over `LandmarkManager` now only returns the keys

    ```
     for label in image.landmarks:
         image.landmarks[label]  # Access like this
    ```
  - This has the added bonus that you can now do

    `assert ('label' in landmarks)`
  - Similarly, for `LandmarkGroup`, you can delete a label:

    `del image.landmarks['label']['leye']`

    However, it comes with a caveat. If you try to delete a label that leaves a point unlabelled, this **will throw an exception**. This maintains the current interface for `LandmarkGroup` in that you can't have a `LandmarkGroup` that has unlabelled points.