Added instances for NonEmptyList and accompanying spec.

I had a go at adding instances that made sense for NonEmptyList. It was mostly to learn a bit more about Monocle - I still don't grok quite a bit of this library, so any suggestions/comments welcomed.
Also - as related to #121 I failed to actually get the tests to run at all due to runnning out of heap. Perhaps I was doing something silly - but it looks ok to me.
if we define NonEmptyList instances for Head and Tail, I think we can define index as follow:
```scala
def index(i: Int) = i match {
  case 0 => head.asOptional  // updating the head is a Lens but all Lens are also Optional
  case _ => tail composeOptional index(i -1)  // we use the fact that List has already an Index instance
}
```