convert CBufferedFile into a non-refcounted RAII wrapper

- it now takes over the passed file descriptor and calls fclose() in the
  destructor
- this fixes a leak in LoadExternalBlockFile(), where an exception could
  cause the file to not getting closed
- also disallow copies (like recently added for CAutoFile)
Keep this explicit fclose; we do a rename after it, that's a valid reason to want it closed.