Split AccessLogValve and extract the formatting logic in an AbstractAccessLogValve

Split `AccessLogValve` in an `AbstractAccessLogValve` with the formatting logic and an `AccessLogValve` with the logic to write logs into files.

This split will ease alternate implementation of access logs valves. For example, a valve that would output access logs to a Syslog server.