Add support for "before" and "after"

This fixes #3 by adding `BeforeParser` and `AfterParser`

I decided not to leave `year_high` or `year_low` blank, but to return `Float::INFINITY` instead.

It's based on my previous pull requests (#4 and #5). I can rebase this one if you want to commit the other two first.