LF-PPL: A Low-Level First Order Probabilistic Programming Language for Non-Differentiable Models