BUG/ENH IV2SLS GMM 

see #1066 #1096 

Fixes IV2SLS, finishes up, and adds tests against Stata

- What's available is tested now, including spec_hausman. 
- Stata has a lot more, but ivreg2 mixes IV2SLS and IVGMM. (for example j-test is available in IVGMM.

- reported tests in summary: 
  - box-pierce, breush-pagan, durbin's h are not valid with endogenous on rhs,
  - use Cumby Huizinga 1992 instead (Baum Shaffer Stillman 2007)
  - `reset` test also needs to be adjusted (reduced form yhat as regressor)

- still missing: IV tests, and information about first stage regression

Some improvement and refactoring of GMM using IVGMM as test case.

- tests for iterated to convergence verifies against Stata
- onestep or twostep doesn't match up yet, because fititer updates the weight matrix.
  (weights, invweights and cov_moments are still not fully separated, code mixes them up.)
  -> refactored, but Stata gmm oneway produces different results for `bse` and `q`, `jval`
  DONE  Stata uses different defaults, I get good agreement using the same options
  onestep and iid replicates OLS
- IVGMM still uses generic, nonlinear GMM optimization, not linear algebra, 
  DONE added LinearIVGMM
- missing under identification and weak instrument hypothesis tests
- tests for exactly identified case ?  (Stata gmm oneway handles exactly identified case)
  DONE unit tests with GMM replicating OLS at >10 decimals
  - missing: there is no special treatment for exactly identified case
- Note: `jtest` is only valid if optimal GMM (no checks for this)
- missing HAC kernels in `sandwich_covariance`, and automatic lag/bandwidth selection
- cluster robust weights and cov_params not connected yet
- shape restrictions on GMM model, still assumes same number of moments per observation, others?
- CUE: method seems to work, Stata gmm doesn't have CUE, ivreg2 does have cue option, no unit test yet


**Optimization Difficulties**

Trying the datasets.randhie Poisson example as test case:

- convergence without good starting values is very slow, `bfgs` takes a long time, using `nm` first helps
- with bad starting values, I get svd didn't converge in pinv exception with `bfgs`
- what's a robust estimation method?
- problem with badly scaled dataset (in Cameron Trivedi Poisson example, see #1131)


**Examples/Usage**

- datasets.randhie Poisson 

  - difference in params between gmm and poisson is around 5 decimals
  - bse gmm / bse poisson is approximately 2.5 (variance = mu not imposed in GMM)
  - bse gmm / bse negbin  is between 1.1 and 1.2