BUG: allow any axis for np.concatenate for 1D

Previous numpies allowed the user to pass any integer as axis argument
to np.concatenate, when the input arrays were 1D.  At some point we
tightened up on this, raising an error for axis values other than 0.
This raises a FutureWarning for axis numbers != 0, but allows them, for
backwards compatibility.
BUG: change FutureWarning to DeprecationWarning

Use of PyErr_WarnEx causing failure for Python 2.4.
TST: test DeprecationWarning raised by concatenate

From review by Nathaniel - thanks.
ENH: Allow objects to use the array interface without specifying data
BUG: Make shape check for special case a bit stricter
TST: Add test for special case in array interface
BUG: Make sure empty shapes are disallowed when data is specified
BUG: Fixes for Python 3.x
ENH: More capable test functions for warnings

1) New function assert_no_warnings
2) Make assert_warns and assert_no_warnings pass through the
   function's return value on success, so that it can be checked as
   well.
FIX: Transition scheme for safer in-place ufunc operations

In numpy 1.6 and earlier, if you do
  np.add(int_arr, float_arr, out=int_arr)
or
  int_arr += float_arr
then the result will be silently truncated to integer values. This
often produces bugs, because it's easy to accidentally end up with an
integer array and not realize it.

Therefore, there seems to be consensus that we should switch to using
same_kind casting by default for in-place ufunc operations. However,
just switching this (as was done initially during the 1.7 development
cycle) breaks a lot of code, which is rude and violates our
deprecation policy.

This commit instead adds a special temporary casting rule which acts
like "unsafe", but also checks whether each operation would be allowed
under "same_kind" rules and issues a DeprecationWarning if not.

It also moves NPY_DEFAULT_ASSIGN_CASTING into the formal API instead
of leaving it as a #define. This way we can change it later, and any
code which references it and is compiled against this version of numpy
will automatically switch to whatever we change it too. This avoids
the situation where we want to remove the temporary magic value we're
using to create DeprecationWarnings now, but can't because it would be
an ABI break.
STY: fix up style and a few wordings on previous commit
STY: another wording tweak (thanks to @charris)
DOC: document in dev-guide how to write a good commit message.
DOC: a few edits to make "Development Workflow" in the dev guide clearer.
DOC: remove section "Patching" from dev-guide.

This section is outdated, and following it pretty much ensures that your
patches will languish in Trac.
DOC: one more edit to the dev-guide.

Recommend to update master before creating your feature branch.
Thanks to Nicky van Foreest for feedback on the dev-guide.
BUG: PyErr_SetObject does not steal reference.

Closes "Ticket #2125" and "Ticket #2216"
DOC: expand sections on commit messages and merging/rebasing in the devguide.

This commit address comments from Charles on PR #455.
Merge pull request #451 from njsmith/unsafe-cast-deprecation

Unsafe cast deprecation
BUG: strides should only be changed if dimensions==1

This fixes Issue #380".