Support writing unicode to files, thanks @jacktang
fix internal log rotation when check_interval > 0
Merge pull request #128 from gomoripeti/pgö-rotate-check-interval

fix internal log rotation when check_interval > 0
test internal log rotation when check_interval > 0
Implement event stream processing

Adds transparent event stream processing and statistics.
A new 3-tuple trace is introduced as `{Key, Op, Value}`, but
for backwards compatibility `{Key, Val}` implies `=` for `Op`
and `{Key, '*'}` remains as is in the case of wildcards.
A simplified query tree module is generated which reduces
redundant selection conditions to minimize filtering overhead.
Fix typespecs for a clean dialyzer run

Fix typespec of lager_file_backend:init() and lager_msg record
Add a latin-1 test
Merge pull request #130 from gomoripeti/pgö-rotate-check-interval-test

test internal log rotation when check_interval > 0
Clarify the file backend's init() spec, correct some documentation
Merge branch 'garret-smith-gs-typespec-fixes'
Merge pull request #129 from basho/adt-unicode-fix

Support writing unicode to files, thanks @jacktang
Merge branch 'dz-event-stream-processing' of git://github.com/DeadZen/lager into DeadZen-dz-event-stream-processing

Conflicts:
	src/lager_util.erl
Correct the tracing statistics to account for # of installed traces
Pin the goldrush dep to a SHA
Merge branch 'DeadZen-dz-event-stream-processing'
Kill org-mode in favor of markdown, update docs and defaults
Implement persistent traces in config file
Add a simple test for persistent traces
Merge branch 'srs-persistent-traces'
Disable I/O to the console if the old-style Erlang console is used

There's a nasty problem with the Erlang VM + lager when the old-style
Erlang console is used.  You can use the "-oldshell" flag to explicitly
get the old-style shell.  However, if the Erlang VM is started when
*not* associated with a pseudo-tty, the VM will silently use the
old-style shell (because the new-style shell requires a pty to
support command line editing, etc.).  The most common way of starting
the Erlang VM without a pty is to start it via a non-interactive
SSH session.

This patch is opinionated in what to do in the case when the old-
style shell is detected.  My opinion is:

1. Shout loudly to the console log (in a separate Erlang process, so
   that the main lager event handler proc won't be blocked by any
   problems with the old-style console).  It's almost certainly
   likely that you really don't want to run Erlang with the old-style
   shell.  But many sysadmins don't look closely at their systems'
   log files, so (for example) shouting the same message 10x in a row
   is legit.  Reviewers: YMMV.
2. Set a SASL alarm.  Again, many sysadmins' are bad at looking at
   log messages.  Setting a SASL alarm is another method to try to
   get their attention.

To test, create a test script called `/tmp/testit.sh`, changing the
`-pz` parameter to point to the correct place for lager's `ebin`
subdirectory:

    #!/bin/sh

    erl -pz /Users/fritchie/b/src/lager/ebin -eval '{application:start(sasl), lager_console_backend:init([error, true]), timer:sleep(5*1000), io:format("\n\nInfo: ~p\n\n", [{{alarms, alarm_handler:get_alarms()}, {user_drv, whereis(user_drv)}}]), erlang:halt()}.'

Then run it twice, using the following:

    First time: ssh -t localhost sh /tmp/testit.sh
    Second time: ssh localhost sh /tmp/testit.sh

The last lines of the first time should look like:

    Info: {{alarms,[]},{user_drv,<0.22.0>}}

The last lines of the second time should look like:

    Info: {{alarms,
               [{lager_console_backend,
                    "WARNING: old-style console is in use, so lager_console_backend log output to the console is disabled.  Restart the VM on a pseudo-tty to ensure use of the new-style VM console."}]},
           {user_drv,undefined}}