[PATCH v2 1/4] Add cleaner line-by-line reading primitives