marker: factor out an Angle struct

This should be a zero-cost abstraction that helps us check we
pass the correct params. It also cleans up the code a bit.
7 jobs from angle in 50 minutes and 15 seconds (queued for 1 minute and 2 seconds)
Status Job ID Name Coverage
  Test
passed #165114
fedora test

00:08:36

 
  Lint
manual #165116
allowed to fail manual
clippy
passed #165115
rustfmt

00:00:25

passed #165117
tarball

00:11:48

 
  Cross Distro
passed #165120
debian_i386:testing

00:10:16

passed #165119
debian:testing

00:09:21

passed #165118
fedora:rawhide

00:09:47