Files External: allow dynamic backend registration

Basic porting from the original pull request is done.