* Return Instances of the Type of self from Fluent Methods
* Updated `Workplane.workplane()`, `Workplane.copyWorkplane()`, `Workplane.newObject()` to return instances of a type that's based on the input parameters (such as `self`).
* Updated type hints to reflect that return types of fluent methods depend on the type of method arguments.
* Added a unit test to verify fluent methods in a derived class return instances of the derived class.
* Fix Workpane MyPy Errors
* Fixed type hints in `sweep()` and `_selectObjects()`.
* Fix `test_cadquery.py` Formatting
* Ran `black` on `test_cadquery.py`.
* Renamed `TypeVar` `WorkplaneT` to `T`
* Renamed `WorkplaneT` to `T` in `cq.py`.
* Reformat with Black
* Re-formatted `cq.py` with `black`.
* Re-format with the Right Version of Black (19.10b0)
* Re-formatted `cq.py` with `black` 19.10b0.
* findSolid returns None when no solids found
Removed a line in the findSolid docstring about raising an error if no
solids found. Added exceptions to several methods that were previously
failing with AttributeErrors when they tried to treat the None object as
a solid.
* findSolid needed type hint Optional on it's return value
* Type hint and test Workplane.findFace
* Rewrite to raise ValueError in findSolid
* I forgot about findFace again
* add exceptions to docstrings
* Added forConstruction option to Workplane.offset2D
* Added Workplane.offset2D example
Co-authored-by: Adam Urbańczyk <adam-urbanczyk@users.noreply.github.com>
* Fixed the `testSplineTangentMagnitudeBelowToleranceThrows` unit test. It was failing since `spline()`'s parameter `tolerance` seems to have been renamed to `tol`.