Support custom FileSystem; prevent FileChannel, use SeekableByteChannel

In reference to https://github.com/perlundq/yajsync/issues/17 I propose the following changes:

- optionally configurable FileSystems for file storage and temporary files

- use SeekableByteChannel instead of FileChannel for a more common implementation

- change atomicMove to support different FileSystems (from/to)