Server action results

Right now we're returning a combination of `error` and custom result types for server actions. To make this more consistent, I've introduced a generic `ActionResult` struct that all these operations return