Fix resource loading and return default values

This change fixes the resource data loading logic to use the identifiers
for determining plurality, and implements a function to build empty
responses given a service model and search path. The following now
work correctly:

    >>> sqs = boto3.resource('sqs')
    >>> queue = sqs.get_queue_by_name(QueueName='test')
    >>> print(queue.url)
    'http://...'
    >>> print(queue.attributes)
    {...}

Assuming you have zero messages in the queue, this now works as well:

    >>> messages = queue.receive_messages()
    >>> print(isinstanc(messages, list))
    True

This means that code using the SDK can assume that `receive_messages`
will **always** return a list. Empty response handling tests have
moved into their own class; all other related tests have been updated.
Review feedback for empty resource responses

This modifies the empty response behavior:

* `map` types return an empty dict
* `string` types default to `None` instead of empty string
Merge pull request #1 from boto/load-fix

Fix resource loading and return default values. Fixes #1.