fix(element): isPresent should not throw on chained finders

Now, `$('nonexistant').$('foo').isPresent()` will return false instead
of throwing an error. This change also adds tests that ensure
that catching errors from promises works as expected.