Feature/issue 970 mix fun

#### Summary:

Addresses issue #970, with the addition of the binary mixture function

#### Intended Effect:

* Adds a function, log_mix, to simplify the binary mixture model syntax
* fvar version
* var version
* exposed log_mix to parser 

#### How to Verify:

* src/test/unit/agrad/fwd/functions/log_mix_test.cpp
* src/test/unit/agrad/rev/functions/log_mix_test.cpp 
* src/test/unit/gm/parser/math_functions_test.cpp 

The last test will have 83 function signature tests compared to the 82 in develop.

Furthermore, the following model will run correctly in this branch:

```
data {
  int<lower = 0> N;
  vector[N] y;
}
parameters {
  real<lower = 0, upper = 1> theta;
  vector<lower = 0>[2] sigmas;
  vector[2] means;
}
model {
  theta ~ beta(6,4);
  
  sigmas ~ normal(1,2);

  means[1] ~ normal(10,1);
  means[2] ~ normal(-1,1);

  
  for(i in 1:N)
    increment_log_prob(log_mix(theta,normal_log(y[i],means[1],sigmas[1]),
                              normal_log(y[i],means[2],sigmas[2])));
}
``` 

Given this data from R:

```
set.seed(12345)

N <- 1000
dist_1 <- rnorm(N,mean = 10,sd = 1)
dist_2 <- rnorm(N,mean = -1,sd = 2)

theta <- 0.6

indicator <- rbinom(N,size = 1,prob = theta)
y <- indicator * dist_1 + (1 - indicator) * dist_2


stan_rdump(c('N','y'),file = 'normal_mixture_data.Rdat')
```

#### Side Effects:

None.

#### Documentation:

To-do: Add documentation for the log_mix function

#### Reviewer Suggestions:

Anyone
Rather than using // comments, provide API doc with an explanation of the type params and what they can be and all the argument types and what they are.

If there's tricky math, write it out in full.  

If there are constraints on types or tricky typedefs, put the former in the API doc and the latter near the typedef itself.

You don't need to doc standard operating procedure, or things that are obvious from the signatures (like "log_mix is a function of 3 variables").

You don't need to say that there's a math function for doubles.  There has to be a math function for doubles to satisfy our API requirements, that importing math is enough to get all the double values of things (other than densities).  If a function is purely templated and doesn't refer to any agrad types, then it can just go directly into math.