func Many1SepBy(inner, separator Parser) Parser {
	pairs := Map([]Named{
		{"", separator},
		{"inner", inner},
	}, func(m map[string]interface{}) interface{} {
		return m["inner"]
	})
	return Map([]Named{
		{"first", inner},
		{"rest", ListOf(pairs)},
	}, func(m map[string]interface{}) interface{} {
		first := m["first"]
		rest := m["rest"].([]interface{})
		out := make([]interface{}, 1+len(rest))
		out[0] = first
		for i, val := range rest {
			out[i+1] = val
		}
		return out
	})
}
Many1SepBy parses a list of 1+ things separated by some separator.
E.g. parser.ManySepBy(parser.Digits(), parser.Whitespace1()) would
parse "123 4   456" as []interface{"123", "4", "456"}
package parser
func Digit() Parser {
	return CharRange('0', '9')
}
func LowerLetter() Parser {
	return CharRange('a', 'z')
}
func UpperLetter() Parser {
	return CharRange('A', 'Z')
}
func Letter() Parser {
	return Or(LowerLetter(), UpperLetter())
}
func AlphaNum() Parser {
	return Or(LowerLetter(), UpperLetter(), Digit())
}
func Many1(inner Parser) Parser {
	return Sequence(inner, Many(inner))
}