Created a wrapper to handle ctrl-c on windows

The only way to interrupt ACL2 is to send a CTRL-c, but java can't
get the process ID and can't send a CTRl-c by itself anyway. As a
way to try to deal with that, I made a c++ program that runs the
ACL2 executable and pipes stdin and stdout, but translates 0 bytes
on stdin into CTRL-Cs. It is a mess right now, and doesn't handle
shutdown well. But it works a little.
Switched to using ctrl-c wrapper on Windows

Operations in progress can actually be interrupted now by sending
everything through the ctrl-c wrapper.
Merge branch 'master' of https://github.com/calebegg/proof-pad
Made shutdown on Windows cleaner

The ctrl-c wrapper now interprets a 0 byte as 'shutdown' and a 1 byte
as 'send a ctrl-c'. This is because I couldn't figure out how to get
notified after Java's Process.destroy() is called. Now the user can
do ACL2->Restart from the UI and it doesn't leak processes.
Merge branch 'master' of https://github.com/calebegg/proof-pad
Merge branch 'master' of https://github.com/calebegg/proof-pad
Fix Exception on invalid book path

My dracula path was invalid, which was causing the BookViewer to crash.
Now it checks before trying to iterate through a directory.
Forms named def* autoindent like defun

I was writing defrandoms and proof pad was indenting them like

(defrandom foo ()
           (something here),

which is awkward. I changed the indentation rule to treat any
symbol starting with "def" like it treats defun, only indenting
a little. If I remember right, this is how emacs behaves, so it
may not be completely crazy.
Added the built-in doublecheck randoms

The added defrandom.lisp implements these functions that doublecheck
uses for defproperties:

- random-boolean
- random-between
- random-element-of
- random-char
- random-string
- random-symbol
- random-case
- random-natural
- random-integer
- random-rational
- random-number
- random-atom
- random-data-size
- random-sexp

It is all completely deterministic, which I think will be a good thing
since it will let defproperties be reproducibly certified. This is all
implemented with a defrandom macro, which passes a seed as an extra
argument into each of the random generating functions and modifies it
(based on the position in the expression) for sub-calls to random
functions.
Merge branch 'master' of https://github.com/calebegg/proof-pad
Merge branch 'master' of https://github.com/calebegg/proof-pad
BookViewer scrolls when the tree does not fit

Before, it was impossible to select books that did not fit in the
window itself. Now there is a scroll pane.
Added namespacing capability.

We need a way to avoid name collisions with user code. Packages are
one way we could do that, but that seems to come with quite a bit of
overhead when you want to certify things, and as far as I can tell
the end-user would have to actually do something to use things from
the package (like PACKAGE::WHATEVER).

Namespaces are simpler. It just mangles names beginning with a
percent sign, prepending the current package name. The usage goes

(push-namespace example)

(defun% %private-thing (x)
  (+ x 1))           ; admits EXAMPLE%PRIVATE-THING

(defun% public-thing (x)
  (/ (%private-thing x) 2)) ; admits PUBLIC-THING

(pop-namespace example)

A user of our book doesn't even need to know what we used a namespace.
Namespaced defrandom

To avoid collisions between the defrandom book and user code, defrandom's
internals are now in the DEFRANDOM namespace.
Fixes some bugs introduced while namespacing

Just some typos/oversights.
Struggling with git merging
Merge branch 'master' of https://github.com/calebegg/proof-pad
Putting my changes back in after traumatic merge
Adding ctrlc-windows binary

Now Visual Studio won't be required for Windows users to get started.
Merge pull request #11 from PeterReid/master

Windows ACL2 interrupt/shutdown, defrandom, minor fixes

Fixes #9