Java enumerators lazily compute Enumerator#size

For internally created enumerators (i.e. created with
enumeratorizeWithSize), ensure that calls to Enumerator#size reflect the
current size of the underlying object being enumerated by
introducing a function type which can be lazily computed on calls to
Enumerator#size.
Merge pull request #1310 from dmarcotte/lazy-enum-size

Ensure Enumerator#size reflects changes to its underlying object