CAS-1360: Implementation of the REST API with Spring @RestController

This pull request adds a new extension module that implements CAS REST API with modern Spring @RestController programming model. This new module could be used to effectively replace the older restlet module that implements this REST API.

For deployments that do not use restlet module, the enablement of the REST support is as easy as including this dependency in the overlay's pom:

```xml
<dependency>
            <groupId>org.jasig.cas</groupId>
            <artifactId>cas-server-extension-rest</artifactId>
            <version>${cas.version}</version>
            <scope>runtime</scope>
</dependency>
```

For users of restlet module, just replace the pom dependency and change this snippet in web.xml:

from this:

```xml
<servlet>
    <servlet-name>restlet</servlet-name>
    <servlet-class>org.restlet.ext.spring.RestletFrameworkServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
 
<servlet-mapping>
    <servlet-name>restlet</servlet-name>
    <url-pattern>/v1/*</url-pattern>
</servlet-mapping>
```

to this:

```xml
    <servlet-mapping>
        <servlet-name>cas</servlet-name>
        <url-pattern>/v1/*</url-pattern>
    </servlet-mapping>
```

or delete the web.xml in the overlay altogether if there are no other customizations there as this mapping is provided by CAS' webapp module's web.xml out of the box. 
I'm fine with fixed URIs. Less headache. I'll make the change. —
Sent from Mailbox

On Wed, Jul 9, 2014 at 8:36 AM, LELEU Jérôme <notifications@github.com>
wrote:

>> + * {@link org.springframework.web.bind.annotation.RestController} implementation of CAS' REST API.
>> + *
>> + * This class implements main CAS RESTful resource for vending/deleting TGTs and vending STs:
>> + *
>> + * <ul>
>> + *     <li>{@code POST /v1/tickets}</li>
>> + *     <li>{@code POST /v1/tickets/{TGT-id}}</li>
>> + *     <li>{@code DELETE /v1/tickets/{TGT-id}}</li>
>> + * </ul>
>> + *
>> + * Even though the default URI for tickets resource is {@code /v1/tickets}
>> + * it could be re-configured to whatever URI is desired by setting the following properties
>> + * in either classpath-based or externalized cas.properties file:
>> + *
>> + * <ul>
>> + *     <li>{@code server.rest.prefix=/v1}</li>
> Are we sure we want to make these urls customizable? I would prefer fixed urls, like the other CAS endpoints (/serviceValidate, /proxyValidate...)
> ---
> Reply to this email directly or view it on GitHub:
> https://github.com/Jasig/cas/pull/451/files#r14706746