5.1.0.0 (Jan 18, 2014)

Juno 5.1.0.0 is a major update.

##### Major changes

- Brand new REST client API that uses Apache HttpClient for HTTP communication.
  The new client API is simply a thin layer on top of `HttpClient` that performs serialization and parsing using Juno parsers, but leaves all the details of the HTTP connection to the Apache code.
  See the org.apache.juneau.rest.client package for details.
- New `org.apache.juneau.rest.client.jazz` package and `org.apache.juneau.rest.client.jazz.JazzRestClient` class for performing REST operations against Jazz servers.
  Includes improved support for FORM authentication, and better SSL certificate validation.
- Completely redesigned URL-Encoding support.
  See `org.apache.juneau.urlencoding` package for details.
- Changes to Parser API.
  - Removal of `ExtendedReaderParser` abstract class and moved methods into {@link oaj.parser.ReaderParser} class.
  - Removal of `DataFormat` class from API since it was no longer necessary due to API change above.
  - Removal of `ParserStringReader` class.
    This was a reader optimized to work with `String` input.
    However, it could interfere with garbage collection of the original string object.
    Instead, the existing {@link oaj.parser.ParserReader} was enhanced to work well with `String` input, and tests show no significant performance differences.
  - New `org.apache.juneau.parser.Parser.parse(Object,int,ClassMeta)` convenience method added.

##### Other changes

- Various new methods added to {@link oaj.internal.StringUtils} and {@link oaj.internal.ClassUtils}.
- Improved support on `BeanContext.getClassMetaFromString(String)`.
  Now supports resolving `"long[]"`, and so forth.
- `ResourceDescription` name parameter is now automatically URL-encoded in links.
- {@link oajr.RestRequest} now correctly handles cases involving URL-encoded characters in the path info portion of URLs (e.g. `http://host/contextRoot/foo%2Fbar`).
- Removed lazy-initialization that required locking in {@link oaj.ClassMeta}.
- New `BeanContext.setDefaultParser(ReaderParser)` method added for specifying a default parser to use in a bean context (used when converting beans to `Strings` using `BeanContext.convertToType(Object,Class)`. Old behavior simply used the default JSON serializer in these cases.
- More consistent handling of exceptions across all parsers.
- Minor changes to {@link oajr.RestRequest} class.
  - Changed the order of parameters on `RestRequest#getParameter(String,Class)`.
  - Added `RestRequest.getMapParameter(String,Class,Class,Class)` and `RestRequest.getCollectionParameter(String,Class,Class)}` methods.