manyNM and dependencies

added `upToN` and `manyNM` + tests.  They require() positive arguments.

changed `manyN` from foldLeft to recursive — could use a sanity check, will the trampolining in `cons` be enough to keep it from blowing the stack?  Updated the test to try larger numbers (#7).  

Because no longer using Range in manyN, manyN needs to explicitly check for n >= 0; same with skipManyN which calls manyN.  Updated both tests.