chore: split large Gruntfile into separate tasks