BUG: Stricter checks for gufunc signatures

* Arguments, both input and output, must have at least as many
  dimensions as the corresponding number of core dimensions. In
  previous versions, 1's were prepended to the shape as needed.
* Core dimensions with same labels must have exactly matching
  sizes. In previous versions, core dimensions of size 1 would
  broadcast against other core dimensions with the same label.
* All core dimensions must have their size specified by a passed
  in input or output argument. In previous versions, core
  dimensions in an output argument that were not specified in an
  input argument, and whose size could not be inferred from a
  passed in output argument, would have their size set to 1.
TST: Stricter checks for gufunc signatures

Added euclidean_pdist to umath/umath_tests.c.src.

Modified tests to reflect new, stricter gufunc signature behavior.
DOC: Stricter checks for gufunc signatures

Documented the the new behavior in c-api.generalized-ufuncs.rst.

Added PyUFunc_FromFuncAndDataAndSignature to c-api.ufunc.rst.
Merge pull request #5077 from jaimefrio/gufuncs_core_dim_no_broadcast

WIP: gufunc core dimensions should not broadcast