ENH: Allow schema input in to_file()

Add a schema argument in GeoDataFrame.to_file to pass in to Fiona.
Allows for finer control over how the data gets written.

Refactor to_file into geopandas.io.file.