Add tests/README file
Change preprocessor symbols guard to pragma once

As requested in #49
tests: Increase timeouts in write-and-read and big files tests

Increasing timeout allows these tests to pass when slow hard drive is used.
tests: Add pseudorandom number generator

This commit adds custom pseudorandom number generator in bash which can
have a seed set for making repetitive tests. The generator is
thread/process-safe ($RANDOM was failing in functions launched in background)
for making repetitive tests. Tests that are using a random generator were
made repetitive.

Closes #98
mount: Fix memory leaks and uses after free

Fix few small leaks and invalid uses of FUSE data structures.
Allows passing valgrind memcheck cleanly.
mount: Fix bug in writing data to chunkservers

Some tests indicatied, that the data is corrupted after writing it
to LizardFS. Indeed, there was a bug in the MultiBufferWriter class.
utils: Introduce wireshark plugin

This commit adds sources of a dissector of our protocol which
can be used with wireshark. The source code of this dissector
is generated automatically from comments in the MFSCommunication.h
file (to achieve this the file was slightly modified).
tests: Add expect_* and assert_* functions

This commit adds some useful functions which can substitute common
patterns existing in tests, eg:

if ! some_command [args]... ; then
  test_fail "blah blah blah"
fi
master: Fix segfault when unlinking files

When the master server starts with the empty filesystem it doesn't initialize
one of the lists properly. This issue causes a segfault when unlink operation
is performed shortly after starting the master server with empty metadata.
tests: Add test_compilation_and_rsync

This tests checks if it is possible to successfully use some common tools
on LizardFS. These tools include: git, cmake, g++, rsync.
tests: Fix bugs in test_compilation_and_rsync

This test suffered from two problems:
* git was failing beacuse it couldn't access configuration in /var/lib/jenkins
  directory using lizardfstest UID. I've added -H option to sudo to properly
  set the HOME environmental variable when running tests and modified
  setup_machine.sh to create the home directory for lizardfstest user.
* using 'wait' instead of 'wait <jobspec>' wasn't able to generate a failure
  visible for Jenkins; vide man bash: "If n is not given, all currently active
  child processes are waited for, and the return status is zero."
tests: Add test_unlink

Add a test which tests if chunks are removed after unlinking a file.
tests: Use ramdisk in all SanityChecks

This will speed up SanityChecks, and will allow us to extend our CI
by using virtual machines for SanityChecks.

Closes #107
tests: Add timestamp to error messages

Sometimes when a test fails someone wants to look for errors in
the syslog to figure out what did exactly happen. Add timestamps
to all the error messages in order to make it easier.
tests: Add assert/expect functions for all assertions

This commit modifies tools/assert.sh to automatically generate
asset_some_condition and expect_some_condition for all types of
conditions defined in this file.
tests: Handle errors in subshels properly

Setting -e casused errors in subshels to kill them, but in many cases these
errors were not propagated to the main testing process. This commit sets up
a handler for errors encountered by bash which makes the test fail in such
cases.
tests: Add assertlocal assertions

This commit adds a new type of assertion: assertlocal_<condition>. This
is useful in subshells, when we want to kill the subshell without stopping
the whole test.
tests: Fix collecting errors in test_compilation_and_rsync

This test was suffering an issue with errors generated in subshells. In the
previous commit this kind of problems were fixed. This commits modifies this test
to rely on the mechanism of error propagation fom subshells and also adds some
useful error messages in case of a failure.
tests: Extend test_dbench to use goal 1 and 2

This commit extends test_dbench to test goal 2 as well as goal 1.
tests: Fix cleaning up after tests

Some of the test failed, because files (eg. mountpoint) were removed before
killing all the processes spawned by the tests. This commit makes the tests
kill all the processes first and then remove all the files.