ipython_directive, report except/warn in block and add :okexcept: :okwarning: options to suppress

2nd try on #4866, upstreaming ipython_directive enhancements from pandas.

- Report any error or warning encountered during `ipython::` block execution to stdout.
- Tells you (since yesrterday) the location of the block that triggered the error.
- New `:okexcept:` and `:okwarning:` options to allow the user to supress such output on per-block basis.

Exceptions raised in ipython blocks are currently not reported and silently end up in 
the rendered output. Similarly for Warnings.

Example output:
```
reading sources... [  0%] basics                                                                        

>>>-------------------------------------------------------------------------
Warning in /home/user1/src/pandas/doc/source/basics.rst at block ending on line 706
Specify :okwarning: as an option in the ipython:: block to suppress this message
----------------------------------------------------------------------------
/home/user1/src/pandas/pandas/core/frame.py:2798: FutureWarning: TimeSeries broadcasting along DataFrame index by default is deprecated. Please use DataFrame.<op> to explicitly broadcast arithmetic operations along the index
  FutureWarning)
<<<-------------------------------------------------------------------------

```