Parse identifier objects in filters
Improve error checking for filter objects
Use pairs for objects on arrow types

Previously, function types looked something like
    U_n|V_n
 S ---------> T   where n is a natural number representing
       ∅          a function argument by its index

They now look like
    U_(n,m)|V_(n,m)
 S -----------------> T   where the pair indicates the mth argument
           ∅              bound by a function n lambdas away

This allows the use of curried predicates in occurrence typing
Allow user to write new pair filter objects