Add parametric types

I wasn't sure if we wanted to support parametric signatures like `<E extends Comparable> boolean contains(array<E>, E)`

@martint thoughts?