Add .push_when method to allow filtering of when to push objects, updated auto_push to use it, and added basic criteria to order decorator

Fixes #49