CP-6697: FileSR requires "location" but tab-completion gives "path"

This is part of the work reviving FileSR for CloudStack, so that
we can mount a NFS share just once but create multiple SRs out of
its subdirectory.

Signed-off-by: Zheng Li <zheng.li@eu.citrix.com>
CP-6697: Refactor _checkmount to base class FileSR

It's common for all its sub classes, and now we intend to use it
in FileSR itself too.

Signed-off-by: Zheng Li <zheng.li@eu.citrix.com>
CP-6697: Modernize FileSR as an independent SR type

As part of our attempt to make FileSR an independent SR type, we
add a link/mount for any FileSR in /var/run/sr-mount as the
canonical path, to be inline with other SR type. This will enable
some facility components (e.g. GC) to be able to work with FileSR.

Some refactoring is done as part of this. With FileSR becomes
independent, more code shared by EXTSR and NFSSR can now be moved
into FileSR instead.

Signed-off-by: Zheng Li <zheng.li@eu.citrix.com>
CP-6697: Moving super().attach out of mount_remotepath

The mount_remotepath should be  one layer lower than attach in
terms of abstraction. Putting super().attach there cause extra
burden unnecessarily.

Some other minor changes are made to unify the calling convetion
between FileSR and EXTSR.

Signed-off-by: Zheng Li <zheng.li@eu.citrix.com>
CP-6697: Update EXTSR to use similar convention as NFSSR

... when calling methods from parent class. This brings further
oppotunities for refactoring in the future.

Signed-off-by: Zheng Li <zheng.li@eu.citrix.com>
CP-6697: normal ismount can not deal with bind mount

This is a known design issue of bind mount on Linux. Here we
implement a customized version specific to our environment.

Also refactor self.dconf['location'] to self.remotepath, to be
in line with other file based SR (EXT, NFS), which will give
us more refactoring oppotunities for later code changes.

Signed-off-by: Zheng Li <zheng.li@eu.citrix.com>