Add EUnit test
Avoid gen_server complaint on dirty close when owner proc exits

If I have an EUnit test that fails like this, for example:

    *failed*
    in function bitcask:do_put/5 (src/bitcask.erl, line 1242)
    in call from bitcask:put/3 (src/bitcask.erl, line 244)
    in call from bitcask:'-gh137_regression_test/0-lc$^0/1-0-'/2 (src/bitcask.erl, line 2024)
    in call from bitcask:gh137_regression_test/0 (src/bitcask.erl, line 2024)
    **error:{badmatch,{error,{badmatch,{error,eexist}}}}

... also yields this error complaint that really isn't an error:

    =ERROR REPORT==== 5-Feb-2014::13:42:11 ===
    ** Generic server <0.258.0> terminating
    ** Last message in was {'DOWN',#Ref<0.0.0.6952>,process,<0.230.0>,normal}
    ** When Server state == {state,undefined,undefined}
    ** Reason for termination ==
    ** {{badmatch,{error,badarg}},
        [{bitcask_file,handle_info,2,[{file,"src/bitcask_file.erl"},{line,170}]},
         {gen_server,handle_msg,5,[{file,"gen_server.erl"},{line,604}]},
         {proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,239}]}]}

Don't use an "ok = file:close...." pattern match here.
Fix bad lager:info() call with error_logger:info_msg()
Correctly handle cascading failure from bitcask_fileops:create_file()
Attempt to hack a fix to bitcask_qc_expiry.erl to avoid false positives