Specs (and fixes) for force_unlink

The expected from force_unlink per our conversation with Lamont is: 

1-) If the target exists and is not a real file;
  - raise an error if force_unlink == false
  - unlink the file before doing anything if force_unlink == true

This PR includes tests for force_unlink using symlinks, directories, sockets, pipes, blockdevs and chardevs.