Refactored Navigation #59

Here's my initial proposal, see if this could be improved further.
I did wonder about this too, but by doing so we'd require devs to introduce b/c fixes eg.:

```
if (ENGINE_VERSION > 1.2) {
  $item->setOption('new-option', $value);
}
```