Importing zipped shapefile breaks with some zip files
### User Story
While trying to test the import of shapefiles w/o pyshp and shapely I encountered this error when trying to import a zipped shapefile:
`zipfile.BadZipfile: File is not a zip file`

@ryan86 reports that this worked fine on a mac, so I'm suspicious that the problem was I had created the zip file on windows with 7-zip. For example: https://stackoverflow.com/questions/3083235/unzipping-file-results-in-badzipfile-file-is-not-a-zip-file.

I tried using `unzip_file` from `arches.setup` which comes from `setup_tools` and that worked fine. I will submit a PR shortly.

#### Context
Given that shapefiles are a standard interchange format for spatial data, it's important to have arches operations that interface with them work across platforms.

diff --git a/arches/app/datatypes/datatypes.py b/arches/app/datatypes/datatypes.py
index 78a7d1eee..4a04f13b5 100644
--- a/arches/app/datatypes/datatypes.py
+++ b/arches/app/datatypes/datatypes.py
@@ -19,7 +19,6 @@ from django.contrib.gis.geos import fromstr
 from django.contrib.gis.geos import Polygon
 from django.core.exceptions import ValidationError
 from django.db import connection, transaction
-from shapely.geometry import asShape
 from elasticsearch import Elasticsearch
 
 EARTHCIRCUM = 40075016.6856
diff --git a/arches/app/utils/data_management/resources/importer.py b/arches/app/utils/data_management/resources/importer.py
index 19f40a65d..b42b05cb4 100644
--- a/arches/app/utils/data_management/resources/importer.py
+++ b/arches/app/utils/data_management/resources/importer.py
@@ -6,9 +6,6 @@ import uuid
 import importlib
 import datetime
 import unicodecsv
-import shapefile
-from zipfile import ZipFile
-from shapely.geometry import shape
 from time import time
 from copy import deepcopy
 from optparse import make_option
@@ -36,6 +33,7 @@ from arches.app.models.system_settings import settings
 from arches.app.utils.betterJSONSerializer import JSONSerializer, JSONDeserializer
 from arches.app.search.search_engine_factory import SearchEngineFactory
 from arches.management.commands import utils
+from arches.setup import unzip_file
 from formats.archesjson import JsonReader
 from formats.csvfile import CsvReader
 from formats.archesfile import ArchesFileReader
@@ -114,13 +112,28 @@ class BusinessDataImporter(object):
                         data = unicodecsv.DictReader(open(file[0], 'rU'), encoding='utf-8-sig', restkey='ADDITIONAL', restval='MISSING')
                         self.business_data = list(data)
                     elif self.file_format == 'zip':
-                        zipfile = ZipFile(StringIO(open(file[0], 'r').read()))
-                        filenames = [y for y in sorted(zipfile.namelist()) for ending in ['dbf', 'prj', 'shp', 'shx'] if y.endswith(ending)]
-                        dbf, prj, shp, shx = [StringIO(zipfile.read(filename)) for filename in filenames]
-                        shape_file = shapefile.Reader(shp=shp, shx=shx, dbf=dbf)
-                        self.business_data = self.shape_to_csv(shape_file)
+                        shp_zipfile = os.path.basename(path)
+                        shp_zipfile_name = os.path.splitext(shp_zipfile)[0]
+                        unzip_dir = os.path.join(os.path.dirname(path),shp_zipfile_name)
+                        unzip_file(path,unzip_dir)
+                        shp = [i for i in os.listdir(unzip_dir) if i.endswith(".shp")]
+                        if len(shp) == 0:
+                            print '*'*80
+                            print "ERROR: There is no shapefile in this zipfile."
+                            print '*'*80
+                            exit()
+                        elif len(shp) > 1:
+                            print '*'*80
+                            print "ERROR: There are multiple shapefiles in this zipfile. Please load each individually:"
+                            for s in shp:
+                                print "\npython manage.py packages -o import_business_data -s {0} -c {1} -ow [append or overwrite]".format(
+                                    os.path.join(unzip_dir,s),mapping_file[0])
+                            print '*'*80
+                            exit()
+                        shp_path = os.path.join(unzip_dir,shp[0])
+                        self.business_data = self.shape_to_csv(shp_path)
                     elif self.file_format == 'shp':
-                        self.business_data = self.shape_to_csv(shapefile.Reader(file[0]))
+                        self.business_data = self.shape_to_csv(path)
                 else:
                     print str(file) + ' is not a valid file'
             else:
@@ -163,14 +176,15 @@ class BusinessDataImporter(object):
                 datatype_instance = datatype_factory.get_instance(datatype.datatype)
                 datatype_instance.after_update_all()
 
-    def shape_to_csv(self, shapefile):
+    def shape_to_csv(self, shp_path):
         csv_records = []
-        field_names = [field[0] for field in shapefile.fields[1:]]
-        for feature in shapefile.shapeRecords():
-            csv_record = (dict(zip(field_names, feature.record)))
-            csv_record['geom'] = shape(feature.shape.__geo_interface__).wkt
+        ds = DataSource(shp_path)
+        layer = ds[0]
+        field_names = layer.fields
+        for feat in layer:
+            csv_record = dict((f, feat.get(f)) for f in field_names)
+            csv_record['geom'] = feat.geom.wkt
             csv_records.append(csv_record)
-
         return csv_records
 
 class ResourceLoader(object):
diff --git a/arches/install/requirements.txt b/arches/install/requirements.txt
index b43f32446..4b58f19d4 100644
--- a/arches/install/requirements.txt
+++ b/arches/install/requirements.txt
@@ -6,11 +6,9 @@ rdflib==4.2.2
 rdflib-jsonld==0.4.0
 unicodecsv==0.14.1
 PyYAML==3.12
-pyshp==1.2.3
 pycrypto==2.6.1
 django-guardian==1.4.9
 TileStache==1.51.6
-Shapely==1.6.1
 python-memcached==1.58
 mapbox-vector-tile==0.5.0
 mapnik==0.1
['arches/install/requirements.txt', 'arches/app/utils/data_management/resources/importer.py', 'arches/app/datatypes/datatypes.py']