Handle the --no-colors option only in the write() function

This fixes the problem where [OK] was not being printed with --no-colors and
many colored text was (see also issue 3349).
Add minimum numpy version for matrixlib to a test

See issue 3348.
fix default_sort_key sphinx error

removed the table
Merge pull request #1463 from smichr/sphinx-error

fix default_sort_key sphinx error
Corrected 2 error messages and a spelling.
Merge pull request #1466 from angadhn/kanechanges

Corrected 2 error messages and a spelling.
Merge pull request #1461 from asmeurer/test_colors

Handle the --no-colors option only in the write() function
Merge pull request #1429 from scolobb/ct1-diagram-layout

Diagram Layout
Add XypicDiagramDrawer and start implementing the method draw().

This commit also adds XypicDiagramDrawer to __init__.py.  The method
draw() only places the objects in the Xy-pic grid for now.
XypicDiagramDrawer: Begin typesetting the morphisms.

All morphisms are currently drawn straight, without curving, which
quite often results in ugly overlapping.
XypicDiagramDrawer: Factor out morphism drawing into _draw_morphism.

This commit adds _draw_morphism to keep the method draw() less
cluttered.
XypicDiagramDrawer: Map objects to morphisms in advance.

This commit modifies the method draw to create the mapping between
an object and those morphisms which have this object as domain in
advance, instead of using a function to achieve this mapping.
XypicDiagramDrawer: Add some rudimentary testing code.

These are not proper tests, but rather some printing which serves for
debugging purposes.  This code will be modified later.
XypicDiagramDrawer: Enable _draw_morphism to produced curved horizontal arrows.

This morphism enables _draw_morphism do decide when to draw curved
morphisms, how to curve them, and where to place the label.  This does
not solve the problem of positioning the labels of other morphisms,
however.
XypicDiagramDrawer: Decouple the analysis of morphisms from typesetting.

This commit makes the analysis of morphisms in view of producing the
corresponding string representation a separate stage, which happens
before the actual generation of Xy-pic code.  This allows traversing the
morphisms in any order, as well as modifying the properties of some
morphisms after they have already been analysed.
XypicDiagramDrawer: Also consider those which go into the object.

Previously, _process_morphisms would only consider those morphisms which
came out of the objects to decide on the direction in which to curve
arrows.  This is obviously wrong and this commit fixes the issue.
XypicDiagramDrawer: Sort the morphisms by their length and direction.

Before analysing the morphisms, XypicDiagramDrawer now sorts them such
that horizontal and vertical morphisms between neighbouring objects come
first, then longer horizontal and vertical morphisms, and finally,
diagonal objects.
XypicDiagramDrawer: Fix how sticking out morphisms are collected.

This commit makes it sure that only morphisms which indeed stick out of
the objects between the domain and the codomain of a long morphisms are
counted when deciding in which direction to curve the arrow.
XypicDiagramDrawing: Fix the abuse of the variable name "morphism".

_process_morphism would spoil the value of its argument "morphism" by
reusing this name for looping.  This commit fixes it.
XypicDiagramDrawer: When bending morphisms, fix the positions of affected labels.

Sometimes the bending morphism can pass over a name of another morphism.
This commit fixes the issue for the cases when a bending horizontal
morphism passes through the label of a horizontal morphism which is in
the same row.