Fix Issue #123.

Check for empty map value data before calling build_sparsity, to
avoid a segfault.

The device.py API wasn't exactly the same as the API defined in
base.py, so it has been changed - device.Map gives values a
default value of None, but raises an exception if no values are
passed.

[Buildbot pass](http://buildbot-ocean.ese.ic.ac.uk:8080/builders/pyop2-testing/builds/125)