Implement generic List properties

@jpsim 
Agreed, the `_rlmArray` property has to be public, but the public `List` initializer doesn't have to expose it. i.e.:

```swift
public init() {
  super.init(array: RLMArray(objectClassName: demangleClassName(NSStringFromClass(T))))
}

convenience init(_ rlmArray: RLMArray) {
  super.init(array: rlmArray)
}
```

So the `init(_ rlmArray)` isn't public.