initial yield object support

#40. basically a copy and paste of `.join()`. you may want to:

- ~~alias the method as something other than `.map()`~~
- ~~combine this method with `.join()`. personally i don't mind the redundancy.~~
- ~~do the type check in `.join()` and make `.map()` private.~~