Change `views` to be an array

As an object, it's not possible to have multiple subviews of the same
view. As an array, lookup of subviews is a bit harder, but multiple
subviews are possible.

The previous `views` as an object functionality is still in place for
backwards compatibility.