Don't check if there is input in popFront, just assert if there is not.
Use static if where appropriate.
Fix bug where save was not being called on the wrapped InputRange.
Also add unittest to exercise the save behavior.