Passing env vars for less permissive sudo configs.
Abstracting some os_specific functions.

Removed unused page_offset.

Fixed a bug in symcache, symbol names should be duped for keys.

Fixing some warnings.
Some more gitignores.
Making offsets uint64_t.

Most offsets will be small, but the same API is used for some
hardcoded addresses and this will avoid promotion surprises.
Needed to provide os_interface funtions for get_page_mode to work.
Removing poorly used global cr3 value.

This moves the calling of any hueristic method to OS
specific init function, which will make easier to deal
with dependencies on global fields that need to be set
to work.

The cr3 field was used for 2 things:
1. Value for VMI_FILE to return for get cr3, but it never gets set for
CR3.
2. Flag that get_memory_layout() did not work, either because of
errors or because the driver does not support it.  The side effect
was calling functions to set kpgd and cr3 using OS specific methods
as above.