Shuffle

This adds a lot of new methods and should be reviewed.  These are all the methods needed to convert bumble away from underscore.