handling of optional arguments in IBase methods should be clearer

## Motivation

While writing the docs for the IBase class, I saw that there were a number of cases where the code was unclear.  

### `trait` control is unclear

This is a straight refactor with no behavior change.

### await and transition option handling

These might be breaking changes.  The code as written is very confusing.   I *think* I understand the intent...

## todo

- [ ] @krukow needs review
- [ ] needs rspec tests
That is what I thought at first.

I thought that `wait_for_element_exist` would respond to the `:await_animation` argument.

It does not - `:await_animantion` is only used in ibase.rb.

Is this the intend behavior?

```
Then I wait for the page trait appear using the `wait_opts` args
Given the page trait has appeared
Then I wait for `transition_duration` if wait_opts[:await_animation] is truthy
```