avoid file server

Erlang's file and filelib modules serialize a lot of work through the file_server_2 gen server as described in #85. This patch provides de-contended alternatives for uses of those modules that live in blocking vnode operations.


fixes #85 

Testing notes:

This patch is mostly to reduce latencies when everything calls needs_merge in lockstep.  If one were to record and graph the put_times_100 of a cluster under heavy put load, the peaks should be shorter.  Another way to check that everything is truly being avoided is redbug, using this invocation:

`redbug:start("file:check_and_call -> stack", {time,60*1000}).`

The only thing that you should see going past are the file deletion calls (they're on a different gen_server that doesn't block the vnode), which look like this:

```erlang 
19:21:24 <bitcask_merge_delete> {file,check_and_call,
                                      [delete,
                                       ["./data/bitcask/456719261665907161938651510223838443642478919680/25.bitcask.data"]]}
  "proc_lib:init_p_do_apply/3 "
  "gen_server:handle_msg/5 "
  "bitcask_merge_delete:handle_info/2 "
  "bitcask_merge_delete:check_status/1 "
  "bitcask_merge_delete:'-check_status/1-fun-0-'/3 "
  "bitcask_merge_delete:'-delete_files/1-lc$^0/1-0-'/1 "
  "bitcask_merge_delete:'-delete_files/1-lc$^0/1-0-'/1 "
  "bitcask_merge_delete:'-delete_files/1-lc$^0/1-0-'/1 "
  "bitcask_merge_delete:'-delete_files/1-lc$^0/1-0-'/1 "
  "bitcask_merge_delete:'-delete_files/1-lc$^0/1-0-'/1 "
                   
```