Added RPN version of 24 game

An alternate implementation of the 24 game problem which uses RPN (reverse polish notation expressions). 

FYI [RosettaCode](http://rosettacode.org/wiki/Reports:Tasks_not_implemented_in_Rust) still shows that 24 game and 24 game solve are not yet completed.
@prakhar1989 returning a String is ok (and in many cases unavoidable). Taking a String as an input parameter is the one that can be avoided. 

Say you have a method `fn foo(bar: &str)` accepting a `&str`. The caller of your method can already have a &str to call foo (in which case everything's fine) or they can have a String, in which case they need to use `.as_slice()` to take a `&str`.
A slice is practically a pointer to the area of memory where String lives, so `as_slice()` is a very cheap call.

Now say your foo takes a String: `fn foo(bar: String)`. Your caller can already have a String (all good) or they can have a `&str`, in which case they need to call `to_string()` in order to call `foo`.
But here's the catch... `to_string()` has to allocate memory on the heap for the String. This is a relatively expensive thing to do (certainly more expensive than going from `String` to `&str` with `as_slice()`).