Add many plotting options to `plot_place_stats`...

Usage:

    plot_place_stats.py [-h] [--plot-linewidth PLOT_LINEWIDTH]
                        [--plot-legend] [-f FIGURES_PER_ROW]
                        [--plot-width PLOT_WIDTH] [--plot-attr PLOT_ATTR]
                        [--figure-width-inches FIGURE_WIDTH_INCHES]
                        [--figure-height-inches FIGURE_HEIGHT_INCHES]
                        [--figure-font-size FIGURE_FONT_SIZE]
                        [--figure-attr FIGURE_ATTR] [--dpi DPI]
                        [--figures-per-page FIGURES_PER_PAGE] [-o PDF_PATH]
                        [-e ERROR_EVERY] [-b BLOCK_POSITIONS_SHA1]
                        [--h5f-label-lambda H5F_LABEL_LAMBDA]
                        net_file_namebase hdf5_placements_file
                        [hdf5_placements_file ...]

    Plot placement results based on net-file namebase

    positional arguments:
      net_file_namebase
      hdf5_placements_file

    optional arguments:
      -h, --help            show this help message and exit
      --plot-linewidth PLOT_LINEWIDTH
      --plot-legend
      -f FIGURES_PER_ROW, --figures-per-row FIGURES_PER_ROW
                            default=1
      --plot-width PLOT_WIDTH
      --plot-attr PLOT_ATTR
      --figure-width-inches FIGURE_WIDTH_INCHES
      --figure-height-inches FIGURE_HEIGHT_INCHES
      --figure-font-size FIGURE_FONT_SIZE
      --figure-attr FIGURE_ATTR
      --dpi DPI
      --figures-per-page FIGURES_PER_PAGE
      -o PDF_PATH, --pdf-path PDF_PATH
      -e ERROR_EVERY, --error-every ERROR_EVERY
                            Only show error bars at every `error_every`th
                            iteration. (default=5)
      -b BLOCK_POSITIONS_SHA1, --block_positions_sha1 BLOCK_POSITIONS_SHA1
      --h5f-label-lambda H5F_LABEL_LAMBDA
Add HDF label customization to plot_place_stats...

The label of any HDF results file _may_ be customized by prepending a label
followed by `::` to the corresponding `hdf5_placements_file` path.

For example, when plotting:

    python -i -m cyvpr.bin.plot_place_stats 'tseng' cyplace::placed-results.h5 --plot-linewidth=1

The results-file `placed-results.h5` will be assigned the label `'cyplace'`.
If the prefix was not provided, the results-file namebase would be used instead
_(i.e., `placed-results` in this case)_.
Fix default linewidth: default from rc or 1
[NB] Add place-results stat box-plots...

The `--stat-boxplot-mode` _may_ be set to one of `top`, `bottom`, `left`, or
`right` to plot a box-plot for each place-stat.

See below for positioning corresponding to each box-plot mode:

`top`
=====
    _____________
    |  |  |  |  |
    | S| T| A| T|
    |__|__|__|__|
    |           |
    |   trends  |
    |___________|

`bottom`
========
    _____________
    |           |
    |   trends  |
    |___________|
    |  |  |  |  |
    | S| T| A| T|
    |__|__|__|__|

`left`
======
    _________________________
    |  |  |  |  |           |
    | S| T| A| T|   trends  |
    |__|__|__|__|___________|

`right`
=======
    _________________________
    |           |  |  |  |  |
    |   trends  | S| T| A| T|
    |___________|__|__|__|__|

See also: `cyplace/bin/plot_place_stats.plot_h5fs`
Refactor functions into pandas_helpers package...

Refactor the following functions into [`pandas_helpers`][1] package:

  * `significance_comparison`
  * `flatten_dict_to_dataframe`

Update existing code/notebooks to import the above functions from
`pandas_helpers`.

Increase font-size for _$p$-value_ labels in the critical-path-delay box-plots
in the `Routing - significance comparison box-plot` IPython notebook.

[1]: https://github.com/cfobel/pandas_helpers
Refactor significance-box-plot function into py...

Refactor significance-box-plot function into [`pyplot_helpers`][1] package.

Update existing code/notebooks to import the `significance_boxplot` from
`pyplot_helpers`.

[1]: https://github.com/cfobel/python___pyplot_helpers
Use GridSpec in bin.plot_place_stats.plot_h5fs...

Use `matplotlib.gridspec.GridSpec` in `bin.plot_place_stats.plot_h5fs` to
specify layout of trend-graphs and place-stats box-plots.  This decouples the
contents of the trend-graphs area and the box-plots area, such that the number
of rows and columns in each area _(i.e., trend-graphs or box-plots)_ can be
changed independently of the configuration of the opposite area.

Recall that the available layout configurations are:

`None`
======
    _____________
    |           |
    |   trends  |
    |___________|

`top`
=====
    _____________
    |  |  |  |  |
    | S| T| A| T|
    |__|__|__|__|
    |           |
    |   trends  |
    |___________|

`bottom`
========
    _____________
    |           |
    |   trends  |
    |___________|
    |  |  |  |  |
    | S| T| A| T|
    |__|__|__|__|

`left`
======
    _________________________
    |  |  |  |  |           |
    | S| T| A| T|   trends  |
    |__|__|__|__|___________|

`right`
=======
    _________________________
    |           |  |  |  |  |
    |   trends  | S| T| A| T|
    |___________|__|__|__|__|
Refactor place-stats aggregation into place_ext...

Refactor place-stats aggregation into `place_extract_stats_types_and_tables`
function.

The goal here is to decouple the data-aggregation from the plotting of the
data.  This way, we have more flexibility in how we plot the data and allow
possibly different views of the same data to be created without having to
repeat the stats-aggregation.  More details in the doc-string.

See also: `cyvpr.bin.plot_place_stats.place_extract_stats_types_and_tables`
[NB] Refactor place-plots to use GridSpec...

Refactor `cyvpr.bin.plot_place_stats.plot_stats_tables` function to plot using
a `GridSpec`.  By using a `GridSpec` plotting of the trends graph and
stats-box-plots can be done without being concerned about the actual grid
layout for the plots. The grid layout can then be defined by the root
`GridSpec` definition, decoupling the overall grid layout from the plotting
functions.
[NB] Modify plot_stats_tables to draw significa...

Modify `cyvpr.bin.plot_place_stats.plot_stats_tables` function to draw
significance-box-plots, comparing all provided HDF place-results files based on
each stat that the have in common _(i.e., `cost`, `temperature`, etc.)_.

The significance-box-plots provide a quick comparison between the datasets.