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 could do that.—
Sent from Mailbox

On Tue, Jul 8, 2014 at 10:22 PM, Scott <notifications@github.com> wrote:

>> +    /**
>> +     * Create new ticket granting ticket.
>> +     *
>> +     * @param credentials username and password application/x-www-form-urlencoded values
>> +     * @param request raw HttpServletRequest used to call this method
>> +     * @return ResponseEntity representing RESTful response
>> +     */
>> +    @RequestMapping(value = "/${server.rest.ticketsResource.name:tickets}",
>> +            method = RequestMethod.POST,
>> +            consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
>> +    ResponseEntity<String> createTicketGrantingTicket(@RequestBody final MultiValueMap<String, String> credentials,
>> +                                                      final HttpServletRequest request) {
>> +
>> +        Formatter fmt = null;
>> +        try {
>> +            final String tgtId = this.cas.createTicketGrantingTicket(
> in the previous version, I thought we extracted constructing credentials out into its own method that could be overwritten
> ---
> Reply to this email directly or view it on GitHub:
> https://github.com/Jasig/cas/pull/451/files#r14691008