Fix a serious race condition when multiple threads access the same device

The low-level I/O mechanism is:
  seek >>= fun _ ->
  (read | write) >>= fun _ ->

Since threads may switch between the seek and the (read | write), we
must hold an Lwt_mutex.t across this section.

Signed-off-by: David Scott <dave.scott@eu.citrix.com>
Merge pull request #15 from djs55/add-locking

Fix a serious race condition when multiple threads access the same devic...
Open file in buffered mode if the name has prefix "buffered:"

Signed-off-by: David Scott <dave.scott@eu.citrix.com>
Release 1.2.0

Signed-off-by: David Scott <dave.scott@eu.citrix.com>
Merge pull request #16 from djs55/add-locking

Open file in buffered mode if the name has prefix "buffered:"
Merge pull request #17 from djs55/add-locking

Release 1.2.0