main: redraw before starting the main loop.

fixes black screen until first screen vector call.
this bug was introduced when i changed the screen timer code in
.build.yml: use more cores if they are there
main, timer: rework timing for screen redraw.

it doesn't make any sense to use timer_delay in the main loop,
because we have no interrupts so we are busy looping anyway.
u-boot puts us in 600mhz so we aren't going to toast the cpu.

instead only call the screen vector when needed,
but always poll the keyboard and touchscreen for better responsiveness.

mouse: working mouse device. it's a bit of a mess.
spi: a terrible hack of an spi implementation.

this will almost certainly not work on real hardware,
because i don't bother to configure the clock properly.
seems to be good enough for qemu though.
io: add mmio_mask() function for convenient setting and clearing of bits.
.gitignore: it's about time.
*: consolidate mmio boilerplate
Makefile: turn up optimization again
.build.yml: sourcehut builds
timer: set the reset bit rather than clearing others.

was working before in the emulator,
but i think it is the cause of the
apparent stall on real hardware.
fs: start work on filesystem implementation.
README: add info for contributions.
misc: move include dir out of src
i2c: move to bus directory
README: update. show state of device implementations.
datetime: report correct day of year.
datetime: use the twl4030 rtc for an almost complete datetime device.

no way of checking daylight saving time with the rtc,
so that will have to stay out for now.
controller: mostly complete implementation. works mostly as expected.

in the future i would like the camera button on the back of the n900
to function as the start button. it's a gpio rather than being connected
as part of the keyboard matrix, so it would need some extra logic.
main: uxn uses 1 for success codes, not 0.

this solves left stalling because it exceeds the limit of instructions
before uxn_interrupt() is called.