Add copy constructor to File object

Allows the wrapper to be placed in std:vector and similar containers. This
uses a bit extra resources, and does not work for handles that cannot be
duplicated.