framework/dmesg: Adds a new module for dmesg

This modules implements two classes and a helper function. The two
classes are both dmesg wrapper classes, one, PosixDmesg is used on posix
systems when requested to actually do checks on dmesg. The second class,
DummyDmesg, is used to reduce code complexity by providing dummy
versions of the methods in PosixDmesg. This means that we don't need
separate code paths for Posix systems wanting to check dmesg, Posix
systems not wanting to check dmesg, and non-posix systems which lack
dmesg.

Beyond reducing complexity this module also gives better isolation,
dmesg is only used in Test.execute(), no where else. Additional classes
don't need to worry about dmesg that way, it's just available.

V2: - Remove unnecessary assert from PosixDmesg.update_result()
    - simplify replace helper in PoixDmesg.update_result()
    - replace try/except with if check
    - Change PosixDmesg.update_dmesg() to work even if dmesg 'wraps'
v3 - Try/Except assignmnet of PosixDmesg._last_message in update_dmesg()
   - Set the dmesg levels the same as the previous implementation

Signed-off-by: Dylan Baker <baker.dylan.c@gmail.com>
Adds unit tests for the dmesg module

This adds a few tests for the dmesg class.

It also adds a test hook into core.Test. This is a little ugly, but I
just couldn't come up with any other solution that didn't involve
making the dmesg code more invasive or harder to read.

V2 - Adds tests to simulate dmesg 'wrapping'

Signed-off-by: Dylan Baker <baker.dylan.c@gmail.com>
Use the new dmesg class

This actually makes use of the new dmesg class rather than the dmesg
functions. It touches a lot of files, but almost all of these changes
are code removal rather than code addition.

Signed-off-by: Dylan Baker <baker.dylan.c@gmail.com>
piglit-run.py: Restrict dmesg to serial runs

Dmesg reporting has always been inaccurate with concurrent runs, and the
solution to concurrent runs would be to have each run take out a lock,
removing the chance that another test generated an error in dmesg while
it was running. But this effectively makes them a serial run, and at the
cost of greater code complexity. With that in mind it makes more sense
to just force --dmesg to imply -1.

Signed-off-by: Dylan Baker <baker.dylan.c@gmail.com>