[SPARK-4151][SQL] Add string operation function trim, ltrim, rtrim, length to support SparkSql (HiveQL)

@marmbrus @chenghao-intel
Add three string operation functions to support spark sql and hiveql.
eg:
sql("select trim('   a  b   ')  from src ").collect()    --> 'a  b'
sql("select ltrim('   a  b   ')  from src ").collect()    --> 'a  b   ' 
sql("select rtrim('   a  b   ')  from src ").collect()   --> '   a  b'
sql("select length('ab')  from src ").collect()   --> 2

And Rename the trait of stringOperations.scala.
I prefer to rename trait CaseConversionExpression   to  StringTransformationExpression, it is more make sence than before so that this trait can support more string transformation but not only  caseconversion. 

And also add a trait StringCalculationExpression that do string computation like  length, indexof  etc....
@marmbrus  I'm not sure which is more faster, may be could be the same. 
But I got your idea is do not add  external dependency libs into catalyst if only they have significantly improvement.
The native implementation can be done with ```scala.collection.immutable.StringOps.```
eg:
```
ltrim : str.dropWhile ( _ == ' ')
rtrim : str.reverse.dropWhile(_ == ' ').reverse 
```
So I will change this and retest it . Thanks!