Added Waiter.wait_for!, ElementProxy#wait_until_visible, ElementProxy#wait_until_hidden

Added:
- ```Waiter.wait_for!``` - Just like Waiter.wait_for (no bang), but raises ```WaitTimeoutError``` if the condition is not met.
- ```ElementProxy#wait_until_visible```
- ```ElementProxy#wait_until_hidden```
how about keep the same signature as wait_for? like
```ruby
def self.wait_for!(wait_time = nil)
  result = wait_for(wait_time) do
    yield
  end
...
```