Visit Scheduler

@dannyroberts @czue @millerdev - getting close to being done with this, feel free to start reviewing.

https://confluence.dimagi.com/display/ccinternal/Scheduler+Module?focusedCommentId=27365721&#comment-27365721

QA ticket: http://manage.dimagi.com/default.asp?125997

## Module View
![image](https://cloud.githubusercontent.com/assets/249606/3601314/48aacbee-0d00-11e4-9f08-1856c6731bda.png)

## Module view with error
![image](https://cloud.githubusercontent.com/assets/249606/3601294/16496dc2-0d00-11e4-82c7-8edb4a5c31d5.png)

## Form view
![image](https://cloud.githubusercontent.com/assets/249606/3601327/61701954-0d00-11e4-8cde-4c122bf004e3.png)

## Form view alternate
![image](https://cloud.githubusercontent.com/assets/249606/3601333/74159e9e-0d00-11e4-95ff-95d59c41d2ba.png)


Simon,

Sorry, will check on this this week. Wasn't sure what your availability for
feedback was going to be so I de-prioritized it last week.

-Clayton


On Tue, Aug 12, 2014 at 12:28 PM, Daniel Roberts <notifications@github.com>
wrote:

> In corehq/apps/app_manager/xpath.py:
>
> >      def not_equals(self, b):
> >          return XPath(u'{} != {}'.format(self, b))
> >
> >      @staticmethod
> > +    def expr(template, args, partial=False):
>
> Nice. Was confused by what partial meant for a sec. Maybe something like
> chainable is clearer, but also maybe not and it's not a big deal.
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/dimagi/commcare-hq/pull/3871/files#r16124542>.
>