event/BufferedSocket: fix inversed buffer check

This was broken by commit 84d20d9e, which deleted the "!" from the
check.
fs/StandardDirectory: pass writable string to ParseConfigLine()

Eliminate the std::string overhead.
util/CharUtil: fix indent
util/CharUtil: make IsWhitespace*() "constexpr"
util/CharUtil: add IsWhitespaceFast()
util/StringUtil: rename strchug_fast() to StripLeft()
util/StringUtil: move code to StripRight()
util/StringUtil: use IsWhitespaceOrNull() in StripRight()

The null byte is whitespace, too.
LogBackend: use StripRight()

Eliminate duplicate code.
util/StringUtil: add StripRight() overload with "end" argument
TextInputStream: move code to ReadBufferedLine()

Look at the buffer first, before trying to read from the file.  This
reduces overhead because we don't refill the buffer after every line.
util/StaticFifoBuffer: fix indent
util/{Static,Foreign}FifoBuffer: lazy shift

Reduce the number of unnecessary memmove() calls.
TextInputStream: don't strip

Let the caller decide whether to strip.  Only remove \n and \r
(end-of-line markers).
fs/output/FileOutputStream: use open_cloexec()

Support operating systems that don't have O_CLOEXEC.
util/DynamicFifoBuffer: make GetCapacity() and Clear() public
Makefile.am: link libfs.a before libsystem.a

libfs.a depends on libsystem.a.
input/TextInputStream: move ReadBufferedLine() to util/TextFile.hxx
fs/output, fs/TextFile: move to fs/io/
fs/io/Reader: new interface