KPP low level interface handles arrays > nlev+1

The cvmix_coeffs_kpp_low routine needs nlev and max_nlev as inputs: nlev is the
number of [active] levels in the column, and max_nlev is the size of the arrays
being passed (if column has 60 levels but the ocean bottom is level 15, then
nlev = 15 prevents CVMix from doing any computation below the ocean bottom and
max_nlev = 60 allows CVMix to handle memory correctly).
Update cvmix_convection to handle max_nlev

Same as previous commit, but for cvmix_convection module instead of cvmix_kpp
module.
Bugfix: bad array dimension for input

In cvmix_coeffs_kpp_low, zt should be size max_nlev, not max_nlev+1
Update interface for background mixing

Same changes as previous commits, but in background mixing rather than
convection or KPP.
Update interface for double diffusion mixing

Just like the previous commits, except this one also required a change to the
driver for double diffusion because I previously wasn't allocating any memory
for zw_iface. Basing dimension() of Mdiff_out on the size of zw_iface might not
be the best plan; I may end up adding max_nlev to cvmix_data_type or requiring
max_nlev as an intent(in) to all the wrapped interfaces.
Update interface for shear mixing

Same as double diffusion, this required allocated memory for zw_iface in the
stand-alone driver code.
Update interface for tidal mixing

This is the last interface that needs to be updated, all mixing modules should
be able to handle columns where *_iface variables are all size max_nlev+1 and
*_cntr variables are all size max_nlev provided max_nlev >= nlev.
Add max_nlev to cvmix_data_type

cvmix_data_type now uses nlev for "number of active levels" (i.e. number of
layers in the ocean) and max_nlev for "number of total levels" (i.e. size of
diffusivity arrays, depth arrays, etc). The wrapped interfaces of tidal mixing
and kpp mixing both use max_nlev when determining the dimension of the
diffusivity output fields.

When you use cvmix_put to set nlev, if max_nlev has not been set yet then it is
assigned the same value. Similarly, if you set max_nlev and nlev is not yet set
then it is assigned the same value... this is primarily meant to avoid having
to add several additional put calls in the stand-alone driver and the POP code
base.

I also added the "-fp-model precise" flag to the intel build options for the
stand-alone driver because otherwise these changes would allow the optimization
to do things that introduce round-off level answer changes when compared to the
old output.
Add max_nlev to remaining mixing modules

Background, convection, double diffusion, and shear mixing all allocate arrays
in the wrapped coefficient interface based on CVmix_vars%max_nlev rather than
the size of zw_iface.
max_nlev means ddiff and shear don't need zw

This basically rolls back changes to the stand-alone drivers from 760dd99 and
ae3969f -- we don't need to allocate zw_iface (a work-around that was added
when the wrapped interface based the size of new_Mdiff on zw_iface instead of
max_nlev)
Merge pull request #45 from CVMix/feature/allow_inactive_levels

Feature/allow inactive levels

Still need to generate a stand-alone test that allocates more memory than it needs