Raise exception when pillar data is non-dict

This adds some checks to the pillar data passed into the functions in
the state execution module, which raise a SaltInvocationError when the
pillar data is not a dictionary.

It also adds the ability to pass pillar data to state.top and
state.single, as this functionality was missing before.

Additionally, the same check is added to the state.sls runner to prevent
bad pillar data from being passed to it.