Removing old pulse-test

The old eqc pulse property does not work with the
new pulse/rebar.config.
Changed rebar.config

The new PULSE tests consider a lot more side-effects and uses
pulse_gen_server, pulse_supervisor, etc.

We also need to instrument the C-code, therefore there is a line
in port_envs for setting -D PULSE.
Add pulse_instrument compile options

More bitcask modules are instrumented by PULSE.
All compile options are ifdef:ed with PULSE
Patching bitcask_nifs for PULSE usage

Erlang messages are sent from the C-code (bitcask_nifs.c). This
will not work when scheduled by PULSE. Since it is not possible

Patching bitcask_nifs for PULSE usage

Erlang messages are sent from the C-code (bitcask_nifs.c). This
will not work when scheduled by PULSE. Since it is not possible
to send messages to registered processes from C, quite a bit of
machinery is needed to keep track of the current PULSE process
so that messages can be re-routed properly.

Everything is ifdef:ed, so when compiling normally, no code is
added to bitcask.so.

Usage:
bitcask_nifs:set_pulse_pid(Pid) is used to store the current
PULSE pid, after that messages sent from the C code will be
routed properly.
If no call is made to bitcask_nifs:set_pulse_pid is made, the
behavior is unspecified!!
Adding the test code + helper modules
Added a note to rebar.config

The tests can't be run without the pulsified versions of some OTP
libraries (pulse_gen, pulse_gen_server, etc...) and a new version of
PULSE.
Changed relative path of bitcask in bitcask_eqc
Changed comment instruction in rebar.config
Comments and minor refactorings to check_trace
Updated pulse_send

Now uses the correct format required by the improved PULSE. Also turned the
function call into a Macro in order to get access to source location!
Added a pulse_skip for bitcask_nifs:init/0
file operations are not side effects in bitcask_eqc
No need to explicitly start pulse_application_controller

This is done automatically when calling (pulse_)application:start/1 in
the latest pulse_otp.
Better command data for open
added no_side_effect on erlang:now()

also use erlang:now() instead of pulse:seed() to make
quickcheck pick a fresh seed in every shrinking step
erlang:now() doesn't make a good pulse seed

it improves shrinking, but makes recheck not work
Post-merge of Quviq/master: delete test/merge_pulse_qc.erl
Minor bugfix for bitcask:merge1()

There's a race with unopenable files during a merge.  Rather than
throwing an badmatch exception when we can't open a file that's
now gone (due to an honest race), just skip it and allow the merge
to continue.
Fix races with merge by removing wall-clock timestamp comparisons

To fix a race with merging, and to also get rid of the problems
where our use of `os:timestamp()` where the OS's clock goes backward,
I added a new argument to `bitcask_nifs_keydir_put_int()` that has
a boolean connotation: if true, then this keydir put operation is
from an actual `bitcask:put()` operation and not from a merge or
someone opening a bitcask in read-only mode.  And if true, then the
only reaon why we won't accept it is if new entry is for a `file_id`
that is lower than the known largest.

For each put, for any reason, we keep track of the known largest
`file_id` and store it in `keydir->biggest_file_id`.  If an
`bitcask:put()` uses a file id that's smaller than `biggest_file_id`,
then that means that a merge has started since the last real put.
In this case, we return `already_exists`, and the Erlang code will
wrap & start a new data file, so that the new put will always be
appended a datafile with a larger file_id than the file_id used by
a merge.
Add arity 9 version of bitcask_nifs_keydir_put_int