bugfix: "fm map > foo %(input) | bar" would join input list into a single argument"
abstract poll.poll() into Poll class that supports MacOS (BSD-style kqueue) as well as Linux poll().  (Needs some Linux regression testing)
basic portability to MacOS; regression tests pass