Rename ASM file so .o output does not conflict with c file.
Add tool support for scons builds of pic24 code

- Add xc16 Builder objects (cc, ld, ar)
- Add generic support for storing per chip family includes and defines
- Add support for having chip specific defines overriden by module
specific defines
- Add easy autobuild support
- Add deprecated decorator for telling where API functions are used
Pull in correct xc16 header based on target processor
Add SConstruct build files for library, controller and bootloader
Fix mibtool to always know where the site_scons folder is
Add scons build files for field_service_unit
Fix bug when the default value of the property should be None
Make shared library building modular
Completely remove ceedling from tools
Finish removing all traces of ceedling from repo.
Merge branch 'pr-executive-upgrade' into feature-pic24-build
Expand typedargs to include path type

Paths are strings that specify files.  Validators exist for
specifying that the file must exist, be readable and be writable
Add setting for sim30 path to support simulating pic24
First version of infrastructure for generic PIC simulation

Simulator class is a simulator agnostic interface to a PIC simulator
that lets you control the simulator completely.  It spawns a
separate thread to run the simulator in for UI responsiveness.

Concrete simulators are implemented by subclassing SimWorker. Current
basic implementation exists for sim30 to simulate PIC24 code. This
will be used for pic24 unit testing and then pic12 unit tests will
be ported to use this new interface.
Update typedargs to always throw only MoMoException subclasses

We should standardize the exceptions that API routines throw so
that callers know what to expect and what means what.
Change exceptions to log strings correctly

Previously would log a tuple with one string inside
Add asynchronous file reading module

It's surprisingly hard to read from a pipe asynchronously in python
in a cross-platform way.  select() and poll() do not work on Windows
when given a pipe or file object.  The only way that seems to work
on all platforms is spinning up a dedicated thread to block reading
the file and then communicate with that thread using a threadsafe
Queue.

This is not efficient for large reading but is fine for reading a
few bytes.  This is needed for safe subprocess communication with
external simulator programs.
Update sim30 module to use asyncio for reading from sim30 program.
This is to be able to test when the simulator is successfully
running code and when not.  Reads will timeout when it is running
code since it seems to be single threaded.
Add peek to asyncio
Add ability to wait for execution to finish