Add Compose object

Previously we stored the composed functions as a closure within a
compose function.  Even good pickling utilities have difficulty with
this.  This creates a Compose object that holds onto the functions a
little bit more transparently.
count checks for `__len__` attribute
fold and reducers work together with pathos