Move file from old file path to new file path. This follows certain
    conditions:

      - If file already exists at destination do rename inplace.
      - If file destination is on same file system and doesn't exist rename and move.
      - If source and destination are on different file systems do rename in-place,
        and if forceCopy is true copy to dest and move orig to archive directory.

    Parameters
    ----------
      oldPath : string
        Old file path.

      newPath : string
        New file path.

    Returns
    ----------
      boolean
        If old and new file paths are the same or if the new file path already exists
        this returns False. If file rename is skipped for any reason this returns None
        otherwise if rename completes okay it returns True.

def _MoveFileToLibrary(self, oldPath, newPath):
    """
    Move file from old file path to new file path. This follows certain
    conditions:

      - If file already exists at destination do rename inplace.
      - If file destination is on same file system and doesn't exist rename and move.
      - If source and destination are on different file systems do rename in-place,
        and if forceCopy is true copy to dest and move orig to archive directory.

    Parameters
    ----------
      oldPath : string
        Old file path.

      newPath : string
        New file path.

    Returns
    ----------
      boolean
        If old and new file paths are the same or if the new file path already exists
        this returns False. If file rename is skipped for any reason this returns None
        otherwise if rename completes okay it returns True.
    """
    if oldPath == newPath:
      return False

    goodlogging.Log.Info("RENAMER", "PROCESSING FILE: {0}".format(oldPath))

    if os.path.exists(newPath):
      goodlogging.Log.Info("RENAMER", "File skipped - file aleady exists in TV library at {0}".format(newPath))
      return False

    newDir = os.path.dirname(newPath)
    os.makedirs(newDir, exist_ok=True)

    try:
      os.rename(oldPath, newPath)
    except OSError as ex:
      if ex.errno is errno.EXDEV:
        goodlogging.Log.Info("RENAMER", "Simple rename failed - source and destination exist on different file systems")
        goodlogging.Log.Info("RENAMER", "Renaming file in-place")
        newFileName = os.path.basename(newPath)
        origFileDir = os.path.dirname(oldPath)
        renameFilePath = os.path.join(origFileDir, newFileName)
        if oldPath != renameFilePath:
          renameFilePath = util.CheckPathExists(renameFilePath)
          goodlogging.Log.Info("RENAMER", "Renaming from {0} to {1}".format(oldPath, renameFilePath))
        else:
          goodlogging.Log.Info("RENAMER", "File already has the correct name ({0})".format(newFileName))

        try:
          os.rename(oldPath, renameFilePath)
        except Exception as ex2:
          goodlogging.Log.Info("RENAMER", "File rename skipped - Exception ({0}): {1}".format(ex2.args[0], ex2.args[1]))
        else:
          if self._forceCopy is True:
            goodlogging.Log.Info("RENAMER", "Copying file to new file system {0} to {1}".format(renameFilePath, newPath))

            try:
              shutil.copy2(renameFilePath, newPath)
            except shutil.Error as ex3:
              err = ex3.args[0]
              goodlogging.Log.Info("RENAMER", "File copy failed - Shutil Error: {0}".format(err))
            else:
              util.ArchiveProcessedFile(renameFilePath, self._archiveDir)
              return True
          else:
            goodlogging.Log.Info("RENAMER", "File copy skipped - copying between file systems is disabled (enabling this functionality is slow)")
      else:
        goodlogging.Log.Info("RENAMER", "File rename skipped - Exception ({0}): {1}".format(ex.args[0], ex.args[1]))
    except Exception as ex:
      goodlogging.Log.Info("RENAMER", "File rename skipped - Exception ({0}): {1}".format(ex.args[0], ex.args[1]))
    else:
      goodlogging.Log.Info("RENAMER", "RENAME COMPLETE: {0}".format(newPath))
      return True