Fix Snap image overriding

Adding an image to a `Snap` doesn't work.

This fixes that.

#### Technical:
 - First ensure that the new `Element` which is the override always gets added to the head of `elements` for a `Snap`. This wasn't working before because a `Snap` always had a `None` for its `elements` which is an `Option[List[Element]]]`; we map over this to add the `Element` to the head. (This then ends up in the `pressed` `elements` key in `pressed.json`)
 - Parse elements for a `Snap` from `pressed.json` and be able to mix it into the newly created `Snap` object.