text: Title: Confusing AttributeError raised when elements can't be found
  Body: Splinter raises some hard to diagnose errors like: `AttributeError: 'ElementList' object has no attribute 'click'`
  This is caused by the following code:
  
  ```
  element_list = browser.find_by_id("#non-existing")
  element_list.click()
  ```
  
  This happens because the `ElementDoesNotExist` error is masked in `ElementList.__getattr__()`:
  
  ```
      def __getattr__(self, name):
          try:
              return getattr(self.first, name)
          except (ElementDoesNotExist, AttributeError):
              raise AttributeError(
                  u"'{0}' object has no attribute '{1}'".format(
                      self.__class__.__name__, name
                  )
              )
  ```
  
  Simply removing `except ElementDoesNotExist` would fix this issue