Added tree recognition functionality
Removed the useless self_loop check and improved formatting
The is_tree() function has been correpted to check the "directness" of the input graph
with the appropriate is_directed() function.

With this change, graph of the class MultiGraph can be correctly recognised as tree too.
The test suite has been modified accordingly
Added forest recognition functionality and added tests for it.
Slightly modified the is_tree() function.
Rename trees->tree
Handle corner cases.

Simplify logic using not_implemented_for()
Recognize pointless concept
Rename tree_recognition->recognition
Add docs
Revert "Merge pull request #812 from chebee7i/pydot". Addresses #812.

This reverts commit e736d4b4db44f45c59039d44f92013748cbef3f4, reversing
changes made to ceb31d0f4f14556d4e804868efd23c11f2e6b776.
Merge pull request #950 from chebee7i/revert_812

Revert "Merge pull request #812 from chebee7i/pydot". Addresses #812.
Merge pull request #2 from hagberg/markusian-trees_forests_recognition

Markusian trees forests recognition
Fix imports to match trees->tree rename
Merge pull request #3 from hagberg/markusian-trees_forests_recognition

Markusian trees forests recognition
Merge pull request #925 from markusian/trees_forests_recognition

Added tree recognition functionality