Implement 'make dist'.

The dist target has to be after the template evaluation because
the dependencies must be expanded at parse time, rather than at
target evaluation time. Otherwise $(ALL_SRCS) is empty.

Using $(ALL_OBJS) in the 'clean' target's recipe is fine because
the recipe is expanded when the target it built, after all variable
have been defined.