Rebase of the whole work done. Looks like a working implementation, yay!

Implements a macro-materializero of implicit evidences of `Liftable` for
case classes.

An example of how it works:
[info] Compiling 1 Scala source to /home/folone/workspace/macros-playground/macros/target/scala-2.10/classes...
[info] Starting scala interpreter...
[info] import liftableMacro._
import scala.reflect.api.Liftable
import scala.reflect.runtime.{universe=>ru}
import ru._
Welcome to Scala version 2.10.2 (OpenJDK 64-Bit Server VM, Java
1.7.0_45).
Type in expressions to have them evaluated.
Type :help for more information.

scala> case class Ok(s: String, i: Int)
defined class Ok

scala> val s = Ok("ok", 12)
s: Ok = Ok(ok,12)

scala> case class Test(d: Double, s: String, ok: Ok)
defined class Test

scala> val tst = Test(1.0, "test", s)
tst: Test = Test(1.0,test,Ok(ok,12))

scala> case class Test1(d: Double, s: String, ok: Ok, e: Either[Int, String])
defined class Test1

scala> val tst1 = Test1(1.0, "test", s, Left(1))
tst1: Test1 = Test1(1.0,test,Ok(ok,12),Left(1))

scala> showRaw(q"""$s""")
res0: String = Apply(Select(Ident(newTermName("Ok")), newTermName("apply")), List(Literal(Constant("ok")), Literal(Constant(12))))

scala> showRaw(q"""$tst""")
res1: String = Apply(Select(Ident(newTermName("Test")), newTermName("apply")), List(Literal(Constant(1.0)), Literal(Constant("test")), Apply(Select(Ident(newTermName("Ok")), newTermName("apply")), List(Literal(Constant("ok")), Literal(Constant(12))))))

scala> showRaw(q"""$tst1""")
<console>:22: error: Can't splice Test1, consider providing an implicit instance of Liftable[Test1]
        showRaw(q"""$tst1""")
        ^