[SPARK-2179] [SQL] Public API for DataTypes and Schema (Draft update for SQL programming guide)

This is the draft update for SQL programming guide. It adds doc for the data type and schema APIs. You can access it at http://yhuai.github.io/site/sql-programming-guide.html. 
This inconsistency is introduced by the difference between the JVM Row and Python Row. For a JVM Row (both Scala and Java), fields in it are nameless and we need to extract values by providing ordinals. However, a field in a Python Row has its name. Right now, in Python, if users have an `RDD[Row]`, they need to use `inferSchema` to create a `SchemaRDD`. If they have an `RDD[tuple]` or `RDD[list]`, they need to use `applySchema`.