takeOne doesn't work with non-forward ranges

Fixes a bug reported by bioinfornatics [on forum](http://forum.dlang.org/post/pxqytmikgipfjkjexuux@forum.dlang.org).
> range even the basic io as ByLine which implement range can't 
work with std.range.takeOne as is not an Input Range. While a 
basic function such as takeOne do not really need to use save 
method to work a forward range is enough.