Added File object initialization.
Added File object initialization.

Now the File object can initialize even when the file it associates with is not
already present. It makes the following decisions:

    If a datastruct argument is given, indicating that a custom data structure
    should be saved to a file, then that is made the File's data structure and
    it is written out.

    Else if the file already exists, it is read in as the data structure.

    Else the data structure is generated as defined in :meth:`create` and
    written out to as the file.

By allowing custom data structures, we have the groundwork laid for the
DataFile class, which is supposed to allow arbitrary dumping of data structures
into a persistent form. This is what is needed if the user is to be able to
make arbitrary data structures and save them for later under some name, even
interactively.

datreant/datreant,datreant/datreant,datreant/datreant.core,andreabedini/datreant,datreant/datreant.data,datreant/datreant.core,dotsdl/datreant