proposed standard for nonlinear expression graphs

In the discussion in #32 we postponed defining a standard interface for accessing expression graphs of a nonlinear model. Now that the nonlinear ecosystem is a bit more developed with support for Ipopt, NLopt, and Mosek as NLP solvers and JuMP and AMPL (dpo/ampl.jl#4) as modeling interfaces, I'd like to push forward on this. The proposed format uses plain scalar Julia expression objects. There are definitely possibilities to include more structure like ``sum{}`` and ``prod{}`` or matrix operations, but I think that this is a least common denominator that we'll be able to get a lot of mileage out of to start with.

In particular, the possibilities include:
- In-memory interfaces to (MI)NLP solvers (SCIP/Xpress) that have decent APIs for specifying a model using expression trees
- NL reader (exposing the expression graph interface from AMPL.jl)
- NL writer, gives us access to ASL-based solvers
- OSiL writer, gives us access to a number of solvers via [OS](https://projects.coin-or.org/OS), maybe easier than NL writer
- OSiL reader, combined with the writer gives us an open file format for exchanging problems

CC @IainNZ @joehuchette @dpo @juan-pablo-vielma @tkelman @baharev @vitaut