Group source declarations by mark comments

Fixes #61. @segiddins anything you'd do differently?
I personally find `mark_string = mark_string.sub(/^MARK: /, '')` clearer