UP-4261 : Add FocusedOnOnePortletPredicate

Add `FocusedOnOnePortletPredicate` which answers whether a given `HttpServletRequest` addresses a particular portlet (i.e., maximized, exclusive, detached) or not.

See JIRA [UP-4261](https://issues.jasig.org/browse/UP-4261) and [context on how MyUW is using this Predicate](http://apetro.ghost.io/pipelines-need-valves/) to condition branching the rendering pipeline.

Intended to be useful in plugging in as the `Predicate` to a `BranchingRenderingPipeline`.

## Logging

Logs how it made its decision at `DEBUG`, useful for development and troubleshooting.

```
DEBUG o.j.p.r.p.FocusedOnOnePortletPredicate  - Determined request with UrlState MAX does focus on one portlet.
...
DEBUG o.j.p.r.p.FocusedOnOnePortletPredicate - Determined request with UrlState NORMAL does not focus on one portlet.
```

## Example usage

MyUW's customized `renderingPipelineContext.xml` uses this `Predicate` like this:

```
<!-- this branching valve takes the `id` of the out-of-the-box `portalRenderingPipeline` and wraps that default `DynamicRenderingPipeline` as the `false` branch. -->
<bean id="portalRenderingPipeline" class="org.jasig.portal.rendering.BranchingRenderingPipeline">
        <qualifier value="main" />
        <property name="predicate">
            <!-- If using Bucky AND NOT focused on one portlet, redirect to /web. (true path)
                 otherwise proceed down regular dynamic rendering pipeline (false path). -->
            <bean class="com.google.common.base.Predicates" factory-method="and">
                <constructor-arg>
                    <list>
                        <bean class="org.jasig.portal.rendering.predicates.ProfileFNamePredicate">
                            <property name="profileFNameToMatch" value="${angular.profile.name}" />
                        </bean>
                        <ref bean="notFocusedOnOnePortletPredicate" />
                    </list>
                </constructor-arg>
            </bean>
        </property>
        <property name="truePipe" ref="redirectToWeb" />
        <property name="falsePipe" ref="dynamicRenderingPipeline" />
    </bean>


    <bean id="notFocusedOnOnePortletPredicate"
          class="com.google.common.base.Predicates" factory-method="not">
        <constructor-arg>
            <bean class="org.jasig.portal.rendering.predicates.FocusedOnOnePortletPredicate" />
        </constructor-arg>
    </bean>
```