CompositeWebTask
tiny update to WebTask: rename param in signature
Given When Then tasks
clean BDD tasks design

extract the essence of the BDD implementation
from User#runSteps and move it to its own class

- rm User#runSteps: a User should not have any knowledge of (depend on)
  BDDtasks; should only know WebTask.
- add BDDTask: encapsulates the business logic for composing a BDD composite task
update sample to use BBD tasks

Thanks to BDD tasks, I can name my tasks more generically,
not bound to a specific kind of BDD task,
i.e. I can delete the prefix "When|Then"
add factory methods #given #when #then

- they encapsulate new Given(), new When, etc.
- allow for cleaner test code: writing "new Given" is less poetic IMHO
update User

- add #browseTo wrapping Browser#browseTo
- update javadoc